小编CT *_*Zhu的帖子

如果给出色图名称BoundryNorm和'c =',我如何获得matplotlib rgb颜色?

如何获取数字NUM的matplotlib rgb值,给定:

  1. 色图('autumn_r'在下面的示例中为黄色到红色)
  2. BoundryNorm值(以下示例中的"2到10")
  3. 数字NUM

在我的例子中,我想:

  1. 给定任何值2或更小,返回黄色的rgb值.
  2. 给定任何值10或更多,返回红色的rgb值.
  3. 给定3 <= NUM​​ <= 9范围内的值,将从指定的色彩图中选择黄色和红色之间的颜色

下面的代码显示了colormap的用法并定义了我的边界值.现在我只需要一个函数来返回我的rgb值而不是散点图.散点图仅用于可视化,因此我可以看到规范化正如我所希望的那样工作.

import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import cm
import numpy as np
import copy

# setup the plot
fig, ax = plt.subplots(1,1, figsize=(6,6))

# define the data
NUM_VALS = 20
NORM_ENDS = (2,10)
x = np.random.uniform(0, NUM_VALS, size=NUM_VALS)
y = np.random.uniform(0, NUM_VALS, size=NUM_VALS)
tag = copy.deepcopy(y)

# define the colormap
cmap = plt.get_cmap('autumn_r')
cmaplist = [cmap(i) for i in range(cmap.N)]

# create …
Run Code Online (Sandbox Code Playgroud)

python rgb matplotlib colormap

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

Matplotlib 标准化颜色条 (Python)

我正在尝试使用 matplotlib (当然还有 numpy)绘制轮廓图。它有效,它绘制了它应该绘制的内容,但不幸的是我无法设置颜色条范围。问题是我有很多图,并且需要所有图都具有相同的颜色条(相同的最小值和最大值,相同的颜色)。我复制并粘贴了在互联网上找到的几乎所有代码片段,但没有成功。到目前为止我的代码:

    import numpy as np;
    import matplotlib as mpl;
    import matplotlib.pyplot as plt;
    [...]
    plotFreq, plotCoord = np.meshgrid(plotFreqVect, plotCoordVect);

    figHandler = plt.figure();
    cont_PSD = plt.contourf(plotFreq, plotCoord, plotPxx, 200, linestyle=None);


    normi = mpl.colors.Normalize(vmin=-80, vmax=20);

    colbar_PSD = plt.colorbar(cont_PSD);
    colbar_PSD.set_norm(normi);
    #colbar_PSD.norm = normi;
    #mpl.colors.Normalize(vmin=-80, vmax=20);

    plt.axis([1, 1000, -400, 400]);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,颜色条规范有三种不同的行,但它们都不起作用。范围仍然是自动设置的...我的意思是其他一切都正常,为什么颜色条不行?我什至没有收到错误或警告。

谢谢,itpdg

编辑1:图片,与plt.clim(-80,20):

在此输入图像描述

python numpy matplotlib colorbar contourf

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

np.reshape(x, (-1,1)) vs x[:, np.newaxis]

我最近正在阅读一个开源项目的源代码。当程序员想要将行向量转换array([0, 1, 2])为列向量时array([[0], [1], [2]])np.reshape(x, (-1,1))使用 , 。在评论中,它说 reshape 是必要的,以保持数据连续性[:, np.newaxis],而不是没有。

我尝试了这两种方法,似乎它们会返回相同的结果。那么这里的数据连续性保留是什么意思呢?

python numpy

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

`scipy.stat.distributions` 的内置概率密度函数是否比用户提供的函数慢?

假设我有一个数组:adata=array([0.5, 1.,2.,3.,6.,10.])并且我想计算这个数组的威布尔分布的对数似然,给定参数[5.,1.5][5.1,1.6]。我从没想过我需要为此任务编写自己的威布尔概率密度函数,因为它已经在scipy.stat.distributions. 所以,这应该这样做:

from scipy import stats
from numpy import *
adata=array([0.5, 1.,2.,3.,6.,10.])
def wb2LL(p, x): #log-likelihood of 2 parameter Weibull distribution
    return sum(log(stats.weibull_min.pdf(x, p[1], 0., p[0])), axis=1)
Run Code Online (Sandbox Code Playgroud)

和:

>>> wb2LL(array([[5.,1.5],[5.1,1.6]]).T[...,newaxis], adata)
array([-14.43743911, -14.68835298])
Run Code Online (Sandbox Code Playgroud)

或者我重新发明轮子并编写一个新的 Weibull pdf 函数,例如:

wbp=lambda p, x: p[1]/p[0]*((x/p[0])**(p[1]-1))*exp(-((x/p[0])**p[1]))
def wb2LL1(p, x): #log-likelihood of 2 paramter Weibull
    return sum(log(wbp(p,x)), axis=1)
Run Code Online (Sandbox Code Playgroud)

和:

>>> wb2LL1(array([[5.,1.5],[5.1,1.6]]).T[...,newaxis], adata)
array([-14.43743911, -14.68835298])
Run Code Online (Sandbox Code Playgroud)

诚然,我总是理所当然地认为,如果某些东西已经在scipy. 但令人惊讶的是:如果 I timeit100000 次调用wb2LL1(array([[5.,1.5],[5.1,1.6]])[...,newaxis], adata)需要 2.156 秒,而 …

python performance numpy scipy weibull

5
推荐指数
1
解决办法
2384
查看次数

Python:在每列中将单元格中的值除以max

这是一种有效或正确的方法,可以将每列中的每个单元格除以表中该列中的最大值吗?是否有更好的实施(如果这是正确的)?注意:所有值> = 0

new_data = [];
for row in np.transpose(data)[1::]: #from 1 till end
    for elements in row:
        if sum(elements) != 0:
            new_data.append(elements/max(row));
        else:
            new_data.append(0);
new_data = np.transpose(new_data);
Run Code Online (Sandbox Code Playgroud)

现在:

id col1 col2 col3 col4
A   2    1    4    0
B   3    8    2    0
C   2    3    0    0
D   5    5    3    0
E   6    3    3    0
Run Code Online (Sandbox Code Playgroud)

需要:

id col1 col2 col3 col4
A  1/3  1/8  1     0  
B  1/2  1    1/2   0
C  1/3  3/8  0     0 …
Run Code Online (Sandbox Code Playgroud)

python numpy

5
推荐指数
1
解决办法
5087
查看次数

来自广义极值(GEV)最大似然拟合数据的奇怪pdf

我正在进行一些数据分析,包括将数据集拟合到广义极值(GEV)分布,但我得到了一些奇怪的结果.这是我正在做的事情:

from scipy.stats import genextreme as gev
import numpy
data = [1.47, 0.02, 0.3, 0.01, 0.01, 0.02, 0.02, 0.12, 0.38, 0.02, 0.15, 0.01, 0.3, 0.24, 0.01, 0.05, 0.01, 0.0, 0.06, 0.01, 0.01, 0.0, 0.05, 0.0, 0.09, 0.03, 0.22, 0.0, 0.1, 0.0]
x = numpy.linspace(0, 2, 20)
pdf = gev.pdf(x, *gev.fit(data))
print(pdf)
Run Code Online (Sandbox Code Playgroud)

并输出:

array([  5.64759709e+05,   2.41090345e+00,   1.16591714e+00,
         7.60085002e-01,   5.60415578e-01,   4.42145248e-01,
         3.64144425e-01,   3.08947114e-01,   2.67889183e-01,
         2.36190826e-01,   2.11002185e-01,   1.90520108e-01,
         1.73548832e-01,   1.59264573e-01,   1.47081601e-01,
         1.36572220e-01,   1.27416958e-01,   1.19372442e-01,
         1.12250072e-01,   1.05901466e-01,   1.00208313e-01,
         9.50751375e-02,   9.04240603e-02,   8.61909342e-02,
         8.23224528e-02,   7.87739599e-02,   7.55077677e-02, …
Run Code Online (Sandbox Code Playgroud)

python statistics scipy

5
推荐指数
1
解决办法
2430
查看次数

如何在带有误差线的条形图中绘制pandas数据帧的特定行和列(基于行的名称和列的名称)?

我有一个csv文件中的数据结构如下:

    Subject    group    Result1    Result2...    ResultN
    101        a        .5         .1            .2
    103        b        .1         .2            .5
    104        b        .2         .3            .4
    mean_a     a        .5         .1            .2
    mean_b     b        .1         .6            .4
    ste_a      a        .05        .02           .03
    ste_b      b        .01        .05           .04
Run Code Online (Sandbox Code Playgroud)

我只想得到一个条形图,按结果分组,每组的平均行值,其中ste为误差条.不幸的是,我很难这样做.我可以将数据帧转换为两个独立的数据帧,一个用于均值,一个用于ste,如下所示:

               a        b
    Result1    .5       .1
    Result2    .1       .6
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何绘制stes的第二个数据帧作为错误条,我的方法似乎过于复杂,所以我想知道是否有人知道更简单的方法来做到这一点,如果没有,如何使用一个数据帧绘制其他数据帧的误差线.

python plot matplotlib pandas

5
推荐指数
1
解决办法
4548
查看次数

如何在numpy savetxt中格式化,使零仅保存为"0"

我正在将numpy稀疏数组(已删除)保存到csv中.结果是我有一个3GB的csv.问题是95%的细胞是0.0000.我用过fmt='%5.4f'.如何格式化和保存,使零保存为0,非零浮点数以'%5.4f'格式保存?如果我能做到这一点,我相信我可以将3GB降至300MB.

我在用

np.savetxt('foo.csv', arrayDense, fmt='%5.4f', delimiter = ',')
Run Code Online (Sandbox Code Playgroud)

感谢和问候

python numpy

5
推荐指数
2
解决办法
6107
查看次数

我们如何在scipy.stats.anderson_ksamp中传递两个数据集?有人可以举例说明吗?

Anderson函数仅询问一个参数,该参数应为一维数组。所以我想知道如何通过两个不同的数组进行比较吗?谢谢

python statistics scipy chi-squared statsmodels

5
推荐指数
1
解决办法
1878
查看次数

为什么从 1.5.0 开始我不能在调用 matplotlib.animation.FuncAnimation 时设置 blit=True ?

自从更新到 matplotlib 1.5.0 以来,

matplotlib.animation.FuncAnimation(fig, func, init_func=func,
                                   frames=frames, 
                                   interval=1100,repeat_delay=2000, 
                                   blit=True)
Run Code Online (Sandbox Code Playgroud)

结果是

AttributeError:“NoneType”对象没有属性“set_animated”

在 matplotlib/animation.py 的第 1134 行,即

TimedAnimation.__init__(self, fig, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我需要进行设置blit=False才能继续而不会出现错误。

无论我如何更改 、 等的值,都会发生这种情况figfunc无论如何,这些值在 1.5.0 之前都工作正常。

1.5.0 中是否有更改导致此问题?我可以继续做些什么吗blit=True

python matplotlib python-2.7

5
推荐指数
1
解决办法
645
查看次数