gpt4 book ai didi

python - 将颜色条添加到 python 子图中,其中数据点的颜色取决于未绘制的第三个变量

转载 作者:行者123 更新时间:2023-12-05 07:57:18 24 4
gpt4 key购买 nike

您好,我真的无法尝试向我的绘图添加颜色条。

我有五个一维数组,时间、x 和 p、q、r,它们的长度都相同。我想绘制 x 与 p、x 与 q 和 x 与 r 的关系图,但要根据时间对每个颜色进行编码,以便我可以看到数据如何随时间演变。

我已经设法使用 Python - Line colour of 3D parametric curve 的答案做到了这一点举个例子。这是我的代码:

import matplotlib.pyplot as plt
import numpy as np
from numpy import *
from matplotlib import colors

time, x, p, q, r = loadtxt('data.txt', unpack = True)

cn = colors.Normalize(min(time), max(time))

fig, (axes1, axes2, axes3) = plt.subplots(1,3)

for i in range(len(time)):
axes1.plot(x[i], p[i], '.', color=plt.cm.jet(cn(time[i])))
axes2.plot(x[i], q[i], '.', color=plt.cm.jet(cn(time[i])))
axes3.plot(x[i], r[i], '.', color=plt.cm.jet(cn(time[i])))

plt.show()

但现在我一直在尝试向该图中添加颜色条,以便点的颜色具有一定的意义。

我试过使用类似于 Matplotlib 2 Subplots, 1 Colorbar 的东西但我不确定一般的可映射 im 和 imshow。

任何帮助将不胜感激!谢谢

最佳答案

这(由第三个变量着色)是 scatter 的目的。您需要使用它(或代理 ScalarMappable)来获取颜色图。

因为所有三个轴都使用颜色图显示相同的数据,所以您不需要对颜色条做任何花哨的事情。所有地 block 之间都是相同的。

作为基于您的示例的简单示例:

import numpy as np
import matplotlib.pyplot as plt

time, x, p, q, r = np.random.random((5, 50))

fig, axes = plt.subplots(ncols=3)
for ax, y in zip(axes.flat, [p, q, r]):
# "s=150" indicates a markersize of 15 points (blame matlab)
scat = ax.scatter(x, y, c=time, s=150, cmap='jet')
fig.colorbar(scat)

plt.show()

关于python - 将颜色条添加到 python 子图中,其中数据点的颜色取决于未绘制的第三个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315869/

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