小编Joe*_*ont的帖子

在matplotlib图中设置`ylabel`的位置

我正在尝试使用matplotlib()重新创建下图.

模板图

但是,我遇到了问题ylabel.我希望它位于y-axis 的顶部,就像在图中一样.我已尝试设置其位置ax.yaxis.set_label_position(),但这只接受leftright为y轴.是否有控制位置的选项ylabel,或者我应该ax.text手动使用和设置文本的位置?

编辑:事实证明,ax.set_ylabel(position=(x,y))设置标签相对于图形坐标的位置.但是,由于它的水平旋转,标签在右边有点过多,position(x,y)似乎不接受负面输入.有没有办法将标签稍微向左移动?

我在这里包含用于生成图形骨架的代码,即使它相当混乱.

import  matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preamble'] = [r"\usepackage[charter]{mathdesign}"]
mpl.rcParams['font.family'] = ['serif']
mpl.rcParams['font.size'] = 10

nb_procs   = np.array([1,     2,        4,      12,     24,    48,     96,     192,    384])

def adjust_spines(ax, spines):
    for loc, spine in ax.spines.items():
        if loc in spines:
            spine.set_position(('outward', 10))  # outward by 10 points
            spine.set_smart_bounds(True) …
Run Code Online (Sandbox Code Playgroud)

matplotlib

13
推荐指数
1
解决办法
3万
查看次数

代表团到姐妹班

我正在经历这个: - https://isocpp.org/wiki/faq/multiple-inheritance#mi-delegate-to-sister

有人可以解释一下这是如何发生的,为什么会发生这种情况?

c++ virtual-functions

8
推荐指数
1
解决办法
2762
查看次数

根据matplotlib中的y值更改曲线的颜色

我正在尝试使用matplotlib的设施复制附图的样式.

颜色随高度变化的曲线

基本上,我想使用matplotlib根据其y值更改曲线的颜色.

matplotlib color-mapping

6
推荐指数
1
解决办法
1万
查看次数

在SciPy中使用16384.0*floor(v/16384.0)的说明

当我发现这个功能时,我正在研究scipy源代码(1)

static int
reflect_jy(npy_cdouble *jy, double v)
{
/* NB: Y_v may be huge near negative integers -- so handle exact
 *     integers carefully
 */
int i;
if (v != floor(v))
    return 0;

i = v - 16384.0 * floor(v / 16384.0);
if (i & 1) {
    jy->real = -jy->real;
    jy->imag = -jy->imag;
}
return 1;
Run Code Online (Sandbox Code Playgroud)

}

我对这条线感到困惑i = v - 16384.0 * floor(v / 16384.0).我知道16384 = 16*1024,但我想知道为什么在目前的代码中使用它.

该代码用于贝塞尔函数的计算,具体而言Y_v(z).当v为负且接近整数时,标准反射公式(包括cos(pi*nu)和sin(pi*nu))产生无效结果.我冒昧地说这是用来平息这个,但我不知道它是如何以及为什么这样.

c scientific-computing scipy

4
推荐指数
1
解决办法
260
查看次数

根据给定对象的类型更改类的行为

我想设计一个通用的C++类,它定义一个operator()函数,该函数在某一点返回数学函数的值.但是,我希望该类能够使用已经operator()定义的对象或类将要插入的值表来实例化以提供值.我想到了以下方法:

class MathFunction
{
    MathFunction(Functor& function);
    MathFunction(Mat<double> interpolationValues);

    double operator()(double radius, double angle);
};
Run Code Online (Sandbox Code Playgroud)

构造函数可以设置成员变量,并double operator()可以使用switch语句来确定如何输出double我想要的.但这看起来非常不优雅.

这个类的模板化版本可能有用,但由于这两种方法不共享任何代码,这样做是否明智?模板版本究竟是如何设计的?

不确定我是否清楚.如果需要澄清,请发表评论.

编辑:虽然我选择了Useless的答案来完整,但我想强调dasblikenlight贡献的速度和清晰度.谢谢.

c++ templates

3
推荐指数
1
解决办法
170
查看次数

将C++数组传递给Fortran子例程会导致nan值出现在结果中

我正在尝试使用C++应用程序中的Fortran代码.具体来说,我正在尝试与SLATEC的drc3jj.f进行交互.但是,Fortran子例程返回一个数组,该数组的大小取决于传递给函数的参数.

如果数组的大小为1,则我打印的C++数组包含适当的值.但是,如果此大小大于1,则C++数组包含应存在输出值的NaN.

以下是我使用的代码.这只是将Fortran子例程链接到C++应用程序.

#ifndef FORTRANLINKAGE_H
#define FORTRANLINKAGE_H

extern "C"
{
    extern void drc3jj_(double*,double*,double*,double*,double*,
                        double*,double [],int*,int*);
}

#endif // FORTRANLINKAGE_H
Run Code Online (Sandbox Code Playgroud)

肉在这里.我们实际上从C++调用Fortran子例程并打印输出:

#include "fortranLinkage.h"

#include <iostream>
#include <stdlib.h>

using namespace std;

void wigner3j(double l2, double l3, double m2, double m3, double coeff [])
{
    double l1min,l1max;
    int ierr,size(3);

    drc3jj_(&l2,&l3,&m2,&m3,&l1min,&l1max,coeff,&size,&ierr);

    cout << "Min: " << l1min << "\t Max: " << l1max << "\t Err: " << ierr << endl;
}

int main(int argc, char const *argv[])
{
    int l1(atoi(argv[1])),l2(atoi(argv[2])),m2(atoi(argv[3])),m3(atoi(argv[4]));
    double …
Run Code Online (Sandbox Code Playgroud)

c++ fortran fortran-iso-c-binding

2
推荐指数
1
解决办法
1167
查看次数

实现一个依赖于姐妹班级的课程

比方说,我有两个派生自抽象基类的类Ingredient.现在,CarrotPotato实现纯虚函数(称之为Taste())的Ingredient通过公共继承.现在,假设我想有一类Salt就是一个Ingredient(即,它是由它派生的),但需要调用Taste()它的姊妹类的实现?

基本上,Salt该类稍微修改了Taste()其姐妹类的实现.这可以实施吗?如果是这样,怎么样?

这是我想要做的草图:

class Ingredient {
    virtual void Taste() = 0;
};

class Carrot : public Ingredient {
    void Taste() { printf("Tastes like carrot");}
};

class Potato : public Ingredient {
    void Taste() { printf("Tastes like potato"); }
};

class Salt : public Ingredient {
    void Taste() { SisterClass->Taste(); printf(" but salty"); }
};
Run Code Online (Sandbox Code Playgroud)

c++ oop

0
推荐指数
1
解决办法
100
查看次数