gpt4 book ai didi

python - 如何创建具有 z 相关填充颜色的 matplotlib 线

转载 作者:行者123 更新时间:2023-12-03 21:43:01 25 4
gpt4 key购买 nike

如何使用 matplotlib 绘制 x-y 线,该线具有取决于第三个变量 z 的填充颜色? (其中 z 与 x 和 y 的长度相同)。
我要 像这样:
enter image description here
什么 我收到 :
enter image description here
示例代码如下所示:

import numpy as np
import matplotlib.pyplot as plt

cm = plt.get_cmap('gist_rainbow')

x = np.linspace(0, 10, 100)
y = np.sin(x) + 1.3
z = 0.5*(np.cos(x) + 1.0)

fig = plt.figure(111)
ax = plt.axes(xlim=(0.0, 10.0), ylim=(0.0, 3.0))
line, = ax.plot([], [], lw=2)

line.set_data(x, y)
ax.fill_between(x, y, interpolate=True, color= cm(z))

plt.show()
我试过有和没有 interpolate=True但在这里没有区别。
扫描了类似的问题/答案,但没有找到任何可以帮助我解决此问题的内容。任何建议将不胜感激。

最佳答案

imshow()并设置 x曲线作为水平范围,您可以绘制一个正确着色的矩形覆盖曲线。该图像可以使用由 fill_between() 创建的多边形进行裁剪.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import PathPatch

cmap = plt.get_cmap('gist_rainbow')

x = np.linspace(0, 10, 100)
y = np.sin(x) + 1.3
z = 0.5 * (np.cos(x) + 1.0)

fig, ax = plt.subplots()
ax.set_xlim(0.0, 10.0)
ax.set_ylim(0.0, 3.0)
ax.plot(x, y, lw=2)

poly = ax.fill_between(x, 0, y, color='none')
img = ax.imshow(z.reshape(1, -1), extent=[x[0], x[-1], 0, y.max()], cmap=cmap, aspect='auto', interpolation='bilinear')
clip_poly = PathPatch(poly.get_paths()[0], transform=ax.transData)
img.set_clip_path(clip_poly)
plt.colorbar(img, ax=ax)
plt.tight_layout()
plt.show()
resulting plot

关于python - 如何创建具有 z 相关填充颜色的 matplotlib 线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66279878/

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