gpt4 book ai didi

python - Matplotlib:使用颜色图显示状态(axvspan 或 bar?)

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:26 33 4
gpt4 key购买 nike

我试图在我的绘图中将一个数据集表示为颜色 block (而不是显示为可变宽度条形图,我想将其显示为具有背景颜色的可变宽度 block 。)

我可以这样做:

import numpy
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import matplotlib.colors as colors

# Create fake data
x = numpy.linspace(0,4)
y = numpy.exp(x)

# Now plot one by one
bar_width = x[1] - x[0] # assuming x is linealy spaced
for pointx, pointy in zip(x,y):
point = 40
current_color = cm.jet( min(pointy/30, 30)) # maximum of 30
plt.bar(pointx, point, bar_width, color = current_color)

plt.show()

但是我没有将颜色图缩放到我的数据范围。

或者我可以做类似的事情:

for i in range(10):
color = cm.jet(min(i/30, 30))
plt.axvspan(i, i+1, facecolor=color, alpha=0.5)

但这同样不能令人满意,因为我希望有一种方法可以将我的数据自动缩放到 cmap 的最小值和最大值。

谢谢!

最佳答案

关于“您的数据范围”,我假设您的意思是颜色图最大为 pointy>30。这可以通过简化您的 current_color 轻松解决:

import numpy
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import matplotlib.colors as colors

# Create fake data
x = numpy.linspace(0,4)
y = numpy.exp(x)

# Now plot one by one
bar_width = x[1] - x[0] # assuming x is linealy spaced
max_y = y.max()
min_y = y.min()

for pointx, pointy in zip(x,y):
point = 40
current_color = cm.jet((pointy - min_y)/(max_y - min_y))
plt.bar(pointx, point, bar_width, color = current_color)

plt.show()

以前,一旦 pointy 大于 30,cmap.jet 的值就会大于 unity,后者是彩色图的上限阈值。相反,我们找到 y 的范围,然后找到 pointy 所在范围的路径分数,并将该数字(介于 0 和 1 之间)传递给颜色图。

enter image description here

关于python - Matplotlib:使用颜色图显示状态(axvspan 或 bar?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974252/

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