gpt4 book ai didi

printing - 打印效果良好的 matplotlib 的颜色选择

转载 作者:行者123 更新时间:2023-12-01 20:10:05 25 4
gpt4 key购买 nike

我正在使用 pandas 和 matplotlib 生成包含大量条形的条形图。

我知道如何循环选择颜色列表 ( How to give a pandas/matplotlib bar graph custom colors )。问题是选择什么颜色,以便我的图表可以很好地打印在纸上(用于研究论文)。我最感兴趣的是柱子之间足够的对比度和看起来令人愉悦的颜色选择。我想要多种颜色而不是灰度或单一色调的配色方案。

是否有可供人们选择的预定方案?

最佳答案

所以您的要求是“很多颜色”和“打印时任何两种颜色都不应映射到相同的灰度值”,对吗?任何“顺序”颜色图(亮度单调增加或减少)都应该满足第二个标准。我认为在 matplotlib 的所有选择中,你只剩下 cubehelix (已经提到),gnuplot ,和gnuplot2 :

3 colormaps, showing luminance and hue

白线是每种颜色的亮度,因此您可以看到每种颜色在打印时都会映射到不同的灰度值。黑线是色调,显示它们在各种颜色之间循环。

请注意,cubehelix 实际上是一个函数 ( from matplotlib._cm import cubehelix ),您可以调整螺旋的参数以产生更广泛变化的颜色, as shown here 。换句话说,cubehelix 不是颜色图,而是颜色图系列。这里有 2 个变体:

enter image description here

enter image description here

对于不太剧烈变化的颜色(对于很多事情来说更令人愉悦,但可能不适合您的条形图),也许可以尝试 ColorBrewer 3 色贴图,YlOrRd , PuBuGn , YlGnBu :

3 colormaps with monotonic luminance but less hue variation

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)
<表类=“s-表”><标题><第> gnuplot bar graph <第> gnuplot2 bar graph <第> cubehelix bar graph <第> YlGnBu bar graph

这些是新人:

<表类=“s-表”><标题><第> new guys colorbars <第> viridis bar graph

关于printing - 打印效果良好的 matplotlib 的颜色选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13968520/

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