【发布时间】:2018-12-21 11:38:43
【问题描述】:
我正在尝试在 python 中使用 50% 百分位的中间颜色制作热图。我经常用 excel 做这件事,但我不能让它在我的自动化 python 代码上工作。
在 (red,yellow,Green) 你可以看到我的 excel 版本,黄色和蓝色是我的 python 版本。
澄清一下,我不介意两种颜色的退化,我只想对 50% 的顶部百分位数和底部给予同样的重视。
我的代码简化代码是:
import pandas as pd
import seaborn as sns
data = {
'row1': [90,95,99,50,50,45,0],
'row2': [99,98,100,100,98,99,80],
'row3': [98,97,99,100,96,95,98],
'row4': [99,98,100,100,98,99,100]
}
fig, ax = plt.subplots(figsize=(9, 4))
df = pd.DataFrame.from_dict(data,orient='index')
sns.heatmap(df.round(), annot=True,ax=ax, cmap="YlGnBu")
感谢您的任何帮助!
【问题讨论】:
-
我不明白这个问题。您是否只对 Python 绘图的颜色不满意?您可以简单地将
cmap更改为您喜欢的内容。这是一个可供选择的列表:matplotlib.org/tutorials/colors/colormaps.html 如果需要,您也可以创建自己的列表。顺便说一句,对于最常见的色盲形式的人来说,红绿色是一个糟糕的选择。 -
嗨 StefanS,我认为以下段落:“澄清一下,我不介意两种颜色的退化,我只想对 50% 的最高百分位数给予同样的重视至于底部。”很清楚地说明问题,我希望底部的 50% 百分位具有重要意义。
-
但是“重要性”只通过颜色来表示,对吧?
-
是的。换一种说法,我希望颜色分级的中间值(50%)是中值,而不是平均值。在我的示例中,中位数为 97.5,因此低于该值我将拥有与上面相同的“颜色数”。
-
我没有时间写一个完整的答案,但如果你想玩,这里有一个关于如何制作你自己的颜色图的指南:matplotlib.org/examples/pylab_examples/custom_cmap.html
标签: python pandas heatmap seaborn percentile