我有一个二维 numpy 数组,我想要 plot 显示不同的 colors 到区域(蓝色表示数据 < 0,红色表示 0 <= 数据 >) 本质上,我正在尝试使用分类 colors 基于数据范围的连续数据。 目前我正在使用表达式(1 * (data < 0)) + (2 * ( ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我花了太多时间研究此问题,但仍在浏览器中打开了一些标签: Link1 Link2 Link3 Link4
我应该在工作!
无论如何,我的问题是:我使用别人的脚本来生成许多热图,然后我必须对其进行检查和排序/分配:
这是一个示例: HM示例
我需要能够轻松地将0.03与零区分开,但是正如您所看到的,它们看起来几乎是相同的。 理想的解决方案是:白色(正零)-黄色-橙色-红色或白色(正零)-橙色-红色
开发人员使用“ YlOrRd”的方式如下:
sns.heatmap(heat_map, annot=True, fmt=".2g", cmap="YlOrRd", linewidths=0.5,
linecolor='black', xticklabels=xticks, yticklabels=yticks
)
我尝试了一堆没有提供的标准/默认颜色图选项。
我没有构建颜色图的任何实际经验,也不想破坏已经在工作的东西。 有人有什么想法吗?
谢谢
**由于工作量有限,我只能张贴什么代码/示例。
一种选择是从现有的颜色图中获取颜色,将第一个颜色替换为白色,然后根据这些操纵值创建新的颜色图。
import numpy as np; np.random.seed(42)
import matplotlib.pyplot as plt
import matplotlib.colors
import seaborn as sns
# some data
a = np.array([0.,0.002,.005,.0099,0.01,.0101,.02,.04,.24,.42,.62,0.95,.999,1.])
data = np.random.choice(a, size=(12,12))
# create colormap. We take 101 values equally spaced between 0 and 1
# hence the first value 0, second value 0.01
c = np.linspace(0,1,101)
# For those values we store the colors from the "YlOrRd" map in an array
colors = plt.get_cmap("YlOrRd",101)(c)
# We replace the first row of that array, by white
colors[0,:] = np.array([1,1,1,1])
# We create a new colormap with the colors
cmap = matplotlib.colors.ListedColormap(colors)
# Plot the heatmap. The format is set to 4 decimal places
# to be able to disingush specifically the values ,.0099, .0100, .0101,
sns.heatmap(data, annot=True, fmt=".4f", cmap=cmap, vmin=0, vmax=1,
linewidths=0.5, linecolor='black')
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.