python - 绘图在 Bokeh 中显示为黑色

标签 python bokeh

我正在尝试从 hdf5 文件中绘制 Bokeh 中的雷达数据。我已将数据存储到 1800*3600 的二维数组中。当我尝试使用 p.image 绘制数据时,它显示为黑色,并带有一些 Blob ,我假设这些 Blob 是数据大于 0 的地方,但它不符合调色板 i'已指定。我不知道为什么会发生这种情况。

f = h5py.File(fname, 'r')
lat = f['Grid']['lat']
lon = f['Grid']['lon']
precip = f['Grid']['precipitationCal']
precip = np.transpose(precip)

d = np.empty((1800,3600))
for (x,y), value in np.ndenumerate(precip):
    if value <= 0:
        d[x,y]=np.nan
    else:
        d[x,y]=value


output_file("testimage.html", title="image.py example")
p = figure(x_range = [0, 3600], y_range=[0, 1800])
p.image(image=[d],x=[0],y=[0],dw=[3600], dh=[1800], pallete="Spectral-256")
show(p)

enter image description here

最佳答案

有两件事:

首先,传递给 p.image 的参数拼写为“palette”而不是“pallete”。默认调色板是 Grey9,它会为您提供您所拥有的颜色图。

第二(文档对此不太清楚),palette 参数接受一个包含十六进制值颜色图的列表。这可以是任意列表:

palette = ["#8c9494", "#8398a2", "#7c9baa"] 
p.image(image=[d],x=[0],y=[0],dw=[360], dh=[180], palette=palette)

或者 Bokeh 的标准调色板

from bokeh.palettes import Spectral6
p.image(image=[d],x=[0],y=[0],dw=[360], dh=[180], palette=Spectral6)

注意:

print(Spectral6)
> ['#3288bd', '#99d594', '#e6f598', '#fee08b', '#fc8d59', '#d53e4f']

https://docs.bokeh.org/en/latest/docs/reference/palettes.html

关于python - 绘图在 Bokeh 中显示为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30561957/

相关文章:

python - Tweepy 截断状态

python - Bokeh 中的多线时间序列图

python - 使用 Start_Date 和 End_Date 绘制 Pandas Dataframe 的计数

python - 我怎样才能在轴上绘制

python - pre-commit 测试应该使用大数据集并在查询时间过长时失败,还是应该使用小型测试数据库?

python - 如何将每 500 个文件移动到不同的文件夹中

python - 来自 Pydantic 模型的参数解析器

python - 有没有一种方法可以将带有条形图的 3 条线图绘制为具有不同 y 轴的一个图形?

python-3.x - "BokehUserWarning: ColumnDataSource' s 列的长度必须相同”

python - 使用 Bokeh 在 Jupyter Notebook 中选择数据区域