python - 使用带有阈值线的颜色图
问题描述
我正在尝试使用颜色图来显示我的数据。我浏览了这个列表: https ://matplotlib.org/examples/color/colormaps_reference.html
我发现 RdBu 和 Seismic 数据图适合我想要通过条形图实现的目标。如何将它们合并到我的代码中?
这是我一直在使用的代码:
threshold = 40000
plt.axhline(y = threshold, linewidth=1, color = 'black')
#Plot bar chart and errorbars
#plt.cla()
#data_color = [x / max(y) for x in y]
my_color = []
for k in range(0, len(xvals)):
if (smax[k] < threshold):
my_color.append('blue')
elif (smax[k] > threshold) & (smin[k] < threshold):
my_color.append('grey')
else:
my_color.append('red')
plt.bar(xvals, y, width = 1.0, tick_label = xvals, color = my_color)
plt.errorbar(xvals, y, yerr = yerr1, linestyle = '', capsize = 10, color = 'black')
这是我得到的输出: 手动添加颜色。希望它们取自 RdBu/Seismic
解决方案
我会解释你在做什么,这可能会帮助你调试你的问题。
np.linespace
np.linspace(.1, .9, 10)
在 0.1 - 0.9 区间内返回 10 个均匀分布的数字:
[0.1 0.18888889 0.27777778 0.36666667 0.45555556 0.544444440.63333333 0.72222222 0.81111111 0.9]
cm.地震
然后你输入上面的数组cm.seismic
。这将为linspace
从蓝色到红色开始的每个点提供一个颜色值。
所以通过调用cm.seismic(np.linspace(.1, .9, 10))
你得到这个颜色映射:
Red Green Blue Alpha (Opacity)
[0. 0. 0.5745098 1. ]
[0. 0. 0.82705882 1. ]
[0.11372549 0.11372549 1. 1. ]
[0.45882353 0.45882353 1. 1. ]
[0.81960784 0.81960784 1. 1. ]
[1. 0.81960784 0.81960784 1. ]
[1. 0.45882353 0.45882353 1. ]
[1. 0.11372549 0.11372549 1. ]
[0.87647059 0. 0. 1. ]
[0.69607843 0. 0. 1. ]
因此,您的数据的第一个点将获取上述数组的第一行作为其颜色值,依此类推。
plt.bar
在您的情况下,您绘制 4 个数据点(条形图)。因此,第一个条形图的颜色将是颜色图 ( 0. 0. 0.5745098 1.
) 的第一行,它是深蓝色的。
在您的数据上有 4 个条形,您将只使用颜色图的前 4 行,永远不会达到红色。
我用来重现您的问题的代码:
import numpy as np
import matplotlib.pyplot as plt
xvals = [0,1,2,3]
y = np.array([30000,35000,40000,50000])
cmap=plt.get_cmap("seismic")
print(np.linspace(.1, .9, 10))
my_colors = cmap(np.linspace(.1, .9, 10))
print(my_colors)
plt.bar(xvals, y, width = 1.0, tick_label = xvals, color=my_colors)
plt.show()
最后,如果您试图实现特定的输出,请编辑您的问题,我会更新我的答案。
推荐阅读
- c# - C# 嵌套对象初始化器
- android - Android 附近连接 - 如何防止与连接和发现重叠
- python - 你如何检查在 tkinter 中是否连续按下两个键?
- java - 我的问题是为什么当按下按钮时,我输入到edittext中的文本不会显示在另一个文本视图中?
- c# - Unity Scene-to-Scene 对象间通信:如何?
- python - 如何将文本块解析为行?
- server - 重复的linux进程消耗cpu
- create-react-app - 使用创建反应应用程序反应 styleguidist 错误
- r - 向量中的奇数相乘
- python - 更新一行,如果缺失则插入一个新行