当使用颜色填充网格时,例如在pyplot中使用contourf时,我需要找到一种方法来更改pyplot用于填充超出颜色条指定范围的数据的颜色.我希望有一个静态颜色条不会自动更改其范围以适应数据的最大/最小值,因此偶尔会超出其边界的极值是不可避免的,并且需要为这些值指定颜色.
超出颜色条边界的值的默认颜色为白色,如果颜色图的最终颜色不是白色,则可能与周围数据明显冲突.示例图像如下所示 - 当值超出颜色条的负范围时,请注意白色填充:
我相信有一种方法可以指定在每个边界使用哪种颜色,如果超过它们使用rcParams,但我无法在任何地方找到相关信息.
任何帮助,将不胜感激.
Java的bisect模块中是否有Java的等价物?使用Python的bisect,您可以使用方向进行数组二分.例如bisect.bisect_left
:
找到列表中项目的正确插入点以维护排序顺序.参数lo和hi可用于指定应考虑的列表的子集; 默认情况下,使用整个列表.
我知道我也可以通过二进制搜索手动执行此操作,但我想知道是否已有一个库或集合执行此操作.
我正在尝试将本地模块(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(2.7)项目,我导入了多个文件.我有一个主要的python文件启动程序.其他文件包含类定义,函数等.
我想知道我是否应该将shebang行放在每个python文件中,或者只是为了启动我的程序而运行的那个?
我想用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)
这必须显示两个锥体.但是,每个锥体都不是连续的,即有一些面缺失,我不知道为什么.任何帮助将非常感谢.
我有一个numpy数组,我想转换成一个nifti文件.通过文档,似乎PyNIfTI用于执行此操作:
image=NiftiImage(Array)
Run Code Online (Sandbox Code Playgroud)
但是,不再支持PyNIfTI.PyNIfTI的继任者NiBabel似乎不支持这个功能.我肯定错过了什么.有谁知道如何做到这一点?
我想使用以下数组为极坐标创建网格.
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)
如何生成网格并显示点?
我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) 我想将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) 我想像这样将创建的图记录到我的工作区:
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 的情况下在本地运行我的脚本,我可以正确地看到这些图。如何将我的情节记录到我的天蓝色实验中?