vko*_*ori 8 printing matplotlib pandas
我正在使用pandas和matplotlib来生成包含大量条形图的条形图.
我知道如何循环选择所选颜色的列表(如何给出pandas/matplotlib条形图自定义颜色).问题是要选择什么颜色,以便我的图形可以很好地打印在纸上(这是一篇研究论文).我最感兴趣的是柱子和选择的颜色之间的足够对比,看起来很舒服.我想要多种颜色而不是灰度或单色调颜色.
是否有任何预定的方案可供人们使用?
end*_*ith 19
所以你的要求是"很多颜色"和"打印时没有两种颜色应该映射到相同的灰度值",对吗?第二个标准应该通过任何"连续"色彩图(其亮度单调增加或减少)来满足.我认为在matplotlib的所有选择中,你留下cubehelix
(已经提到过)gnuplot
,和gnuplot2
:
白线是每种颜色的亮度,因此您可以看到每种颜色在打印时将映射到不同的灰度值.黑色线条是色调,显示它们循环通过各种颜色.
请注意,cubehelix实际上是一个函数(from matplotlib._cm import cubehelix
),您可以调整螺旋的参数以生成更广泛变化的颜色,如此处所示.换句话说,cubehelix不是色彩映射,它是一系列色彩映射.这里有两种变化:
对于疯狂变化的颜色(更愉快的事情很多,但也许不是你的柱状图),也许尝试了3在ColorBrewer色图,YlOrRd
,PuBuGn
,YlGnBu
:
https://www.flickr.com/photos/omegatron/7298887952/
但我不建议仅使用此颜色来识别条形图.您应始终使用文本标签作为主要标识符.另请注意,其中一些产生的白色条纹与背景完全融合,因为它们用于热图,而不是图表颜色:
from matplotlib import pyplot as plt
import pandas, numpy as np # I find np.random.randint to be better
# Make the data
x = [{i:np.random.randint(1,5)} for i in range(10)]
df = pandas.DataFrame(x)
# Make a list by cycling through the colors you care about
# to match the length of your data.
cmap = plt.get_cmap('cubehelix')
indices = np.linspace(0, cmap.N, len(x))
my_colors = [cmap(int(i)) for i in indices]
# Specify this list of colors as the `color` option to `plot`.
df.plot(kind='bar', stacked=True, color=my_colors)
Run Code Online (Sandbox Code Playgroud)
这些是新人:
tac*_*ell 12
在1.5 matplotlib将附带4个新的合理设计的彩色地图:
'viridis'
(将是2.0中的默认颜色图)'magma'
'plasma'
'inferno'
. 设计这些颜色图的过程在https://youtu.be/xAoljeRJ3lU中介绍.
为此过程开发的工具可以通过安装 pip install viscm
我会建议cubehelix
彩色地图.它被设计成在颜色和灰度方面具有正确的亮度排序
我不知道预定的方案.我通常会使用一些颜色来发布图.在选择颜色时,我主要考虑两件事:
如果在matplotlib图中没有指定颜色,则它具有循环的默认颜色集.这个答案对如何更改默认颜色集有很好的解释.您可以将其自定义为您喜欢的颜色集,以便绘图依次使用它们.
归档时间: |
|
查看次数: |
4851 次 |
最近记录: |