小编Oli*_* W.的帖子

Python matplotlib更改超出颜色条范围的值的默认颜色

当使用颜色填充网格时,例如在pyplot中使用contourf时,我需要找到一种方法来更改pyplot用于填充超出颜色条指定范围的数据的颜色.我希望有一个静态颜色条不会自动更改其范围以适应数据的最大/最小值,因此偶尔会超出其边界的极值是不可避免的,并且需要为这些值指定颜色.

超出颜色条边界的值的默认颜色为白色,如果颜色图的最终颜色不是白色,则可能与周围数据明显冲突.示例图像如下所示 - 当值超出颜色条的负范围时,请注意白色填充:

在此输入图像描述

我相信有一种方法可以指定在每个边界使用哪种颜色,如果超过它们使用rcParams,但我无法在任何地方找到相关信息.

任何帮助,将不胜感激.

python matplotlib contour color-mapping colorbar

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

Java相当于python中的bisect

Java的bisect模块中是否有Java的等价物?使用Python的bisect,您可以使用方向进行数组二分.例如bisect.bisect_left:

找到列表中项目的正确插入点以维护排序顺序.参数lo和hi可用于指定应考虑的列表的子集; 默认情况下,使用整个列表.

我知道我也可以通过二进制搜索手动执行此操作,但我想知道是否已有一个库或集合执行此操作.

python java bisect

12
推荐指数
2
解决办法
3536
查看次数

在Airflow DAG中导入本地模块(Python脚本)

我正在尝试将本地模块(python脚本)导入DAG。

目录结构:

airflow/
??? dag
?   ??? __init__.py
?   ??? my_DAG.py
??? script
    ??? subfolder
        ??? __init__.py
        ??? local_module.py

Run Code Online (Sandbox Code Playgroud)

my_DAG.py中的示例代码:

#trying to import from local module
from script.subfolder import local_module  

#calling a function in local_module.py  
a = some_function()  
Run Code Online (Sandbox Code Playgroud)

我在Airflow中收到一条错误消息,说“破损的DAG:my_DAG。没有名为“ local_module”的模块。

我已经将Airflow更新为1.9.0,但这不能解决问题。

  • 这里有什么解决方案?
  • 我还读了一些我可以通过创建插件来解决此问题的地方。谁能指出我该怎么做?

谢谢。

python airflow

9
推荐指数
1
解决办法
4584
查看次数

我应该把shebang行放在每个python文件中吗?

我正在进行一个中型python(2.7)项目,我导入了多个文件.我有一个主要的python文件启动程序.其他文件包含类定义,函数等.

我想知道我是否应该将shebang行放在每个python文件中,或者只是为了启动我的程序而运行的那个?

python shebang

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

绘制锥体时断开连接的曲面

我想用python绘制曲面(z + 1)²=x²+y²和4z =x²+y².

我写了这段代码:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
X= np.arange(-2,3,.1)
Z=np.arange(0,2,.1)
X,Z = np.meshgrid(X,Z)
Y=np.sqrt((Z+1)**2-X**2)
Y2=np.sqrt(4*Z-X**2)
ax.plot_wireframe(X, Y, Z, rstride = 1, cstride =1)
ax.plot_wireframe(X, -Y, Z, rstride = 1, cstride =1)
ax.plot_surface(X,Y2,Z,rstride=1,cstride=1,color='red')
ax.plot_surface(X,-Y2,Z,rstride=1,cstride=1,color='red')
ax.set_zlim(0,2)

plt.show()
Run Code Online (Sandbox Code Playgroud)

这必须显示两个锥体.但是,每个锥体都不是连续的,即有一些面缺失,我不知道为什么.任何帮助将非常感谢.

python matplotlib

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

从numpy数组创建一个nifti文件

我有一个numpy数组,我想转换成一个nifti文件.通过文档,似乎PyNIfTI用于执行此操作:

image=NiftiImage(Array)               
Run Code Online (Sandbox Code Playgroud)

但是,不再支持PyNIfTI.PyNIfTI的继任者NiBabel似乎不支持这个功能.我肯定错过了什么.有谁知道如何做到这一点?

python file-format numpy nifti

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

为极坐标创建一个meshgrid

我想使用以下数组为极坐标创建网格.

R = 1.15
r = numpy.linspace(R,5,100)
theta = numpy.linspace(0,2*numpy.pi,145)
Run Code Online (Sandbox Code Playgroud)

我试过这种方式,使用numpy:

X,Y=numpy.meshgrid(r*numpy.cos(theta),r*numpy.sin(theta))
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

ValueError: operands could not be broadcast together with shapes (100,) (145,) 
Run Code Online (Sandbox Code Playgroud)

如何生成网格并显示点?

python plot numpy polar-coordinates

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

matplotlib 直方图中的圆条

matplotlib.pyplot.hist()在 python 中用于直方图。如果我使用可见的边宽,例如在使用 时histtype='step',单条的上角略圆。我希望它们变成锐利的矩形。我已经尝试使用solid_capstyle关键字,它可以影响线图的形状,但这在hist(). 关于如何做到这一点的任何想法?谢谢!

这是我最小的独立示例

import numpy as np
import matplotlib.pyplot as plt

mu = 200
sigma = 25
x = mu + sigma*np.random.randn(10000)

fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(8, 4))
ax0.hist(x, 20, normed=1, histtype='step', facecolor='g', alpha=0.75, linewidth=4.)
ax0.set_title('step')
# Create a histogram by providing the bin edges (unequally spaced).
bins = [100, 150, 180, 195, 205, 220, 250, 300]
ax1.hist(x, bins, normed=1, histtype='step', rwidth=0.8, linewidth=4.)
ax1.set_title('unequal bins')
plt.tight_layout()
plt.savefig('test.png', dpi=200)
Run Code Online (Sandbox Code Playgroud)

python matplotlib histogram

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

将Mask Array 2d应用于3d

我想将2维掩模(NxM数组)应用于3维数组(KxNxM数组).我怎样才能做到这一点?

2d = lat x lon

3d =时间x lat x lon

import numpy as np

a = np.array(
    [[[ 0,  1,  2],
      [ 3,  4,  5],
      [ 6,  7,  8]],

     [[ 9, 10, 11],
      [12, 13, 14],
      [15, 16, 17]],

     [[18, 19, 20],
      [21, 22, 23],
      [24, 25, 26]]])

b = np.array(
    [[ 0, 1, 0],
     [ 1, 0, 1],
     [ 0, 1, 1]])

c = np.ma.array(a, mask=b)  # this behavior is wanted 
Run Code Online (Sandbox Code Playgroud)

python arrays numpy python-2.7

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

如何在 azureml 中记录绘图?

我想像这样将创建的图记录到我的工作区:

from azureml.core import Run
from matplotlib import pyplot as plt

run = Run.get_context()
Foo = [1,2,3,4]
Bar = [4,3,2,1]

plt.title('Foo vs Bar')
plt.plot(Foo, label='Foo')
plt.plot(Bar, '-r', label='Bar')

run.log_image('Plot', plt)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

"type": "AttributeError",
"message": "module 'matplotlib.pyplot' has no attribute 'tell'",
Run Code Online (Sandbox Code Playgroud)

当它试图计算这个时会发生这种情况:

File "/usr/lib/python3.6/imghdr.py", line 19, in what
location = file.tell()
Run Code Online (Sandbox Code Playgroud)

我可以将变量记录到 azureml。如果我在没有 azureml 的情况下在本地运行我的脚本,我可以正确地看到这些图。如何将我的情节记录到我的天蓝色实验中?

python machine-learning matplotlib azure

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