gpt4 book ai didi

python - 如何使用 Bokeh(或其他库)在 python 中绘制等高线图?

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:08 24 4
gpt4 key购买 nike

我有兴趣在 Bokeh 中绘制等高线图。到目前为止,我还没有在网上找到任何东西。

提醒一下,这是等高线图:

enter image description here

如有任何帮助,我们将不胜感激。我也欢迎向其他库提出建议,但前提是允许交互式/动画图,而不仅仅是渲染静态输出(图像)。

最佳答案

您还可以使用 matplotlibs contour plot 计算等高线数据,然后使用 bokehs multi_line 绘制等高线。我也在绘制文本标签(不幸的是有点难看)。

import numpy as np
import matplotlib.pyplot as plt
from bokeh.models import ColumnDataSource
from bokeh.io import output_file
from bokeh.plotting import gridplot,figure, show

def get_contour_data(X, Y, Z):
cs = plt.contour(X, Y, Z)
xs = []
ys = []
xt = []
yt = []
col = []
text = []
isolevelid = 0
for isolevel in cs.collections:
isocol = isolevel.get_color()[0]
thecol = 3 * [None]
theiso = str(cs.get_array()[isolevelid])
isolevelid += 1
for i in range(3):
thecol[i] = int(255 * isocol[i])
thecol = '#%02x%02x%02x' % (thecol[0], thecol[1], thecol[2])

for path in isolevel.get_paths():
v = path.vertices
x = v[:, 0]
y = v[:, 1]
xs.append(x.tolist())
ys.append(y.tolist())
xt.append(x[len(x) / 2])
yt.append(y[len(y) / 2])
text.append(theiso)
col.append(thecol)

source = ColumnDataSource(data={'xs': xs, 'ys': ys, 'line_color': col,'xt':xt,'yt':yt,'text':text})
return source


output_file("contour.html")

N = 400
x = np.linspace(-1, 1, N)
y = np.linspace(-1, 1, N)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2

source = get_contour_data(X,Y,Z)
plot = figure(plot_width=400,plot_height=400,x_range=[-1,1], y_range=[-1,1])
plot.multi_line(xs='xs', ys='ys', line_color='line_color', source=source)
plot.text(x='xt',y='yt',text='text',source=source,text_baseline='middle',text_align='center')
show(plot)

这是输出:

enter image description here

关于python - 如何使用 Bokeh(或其他库)在 python 中绘制等高线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com