gpt4 book ai didi

python - 如何给 pandas/matplotlib 条形图自定义颜色

转载 作者:IT老高 更新时间:2023-10-28 21:42:16 29 4
gpt4 key购买 nike

我刚开始使用 pandas/matplotlib 作为 Excel 的替代品来生成堆叠条形图。我遇到了一个问题

(1) 默认颜色图中只有 5 种颜色,所以如果我有超过 5 个类别,那么颜色会重复。如何指定更多颜色?理想情况下,具有起始颜色和结束颜色的渐变,以及在两者之间动态生成 n 种颜色的方法?

(2) 颜色不是很赏心悦目。如何指定一组自定义的 n 颜色?或者,渐变也可以。

以下是说明上述两点的示例:

  4 from matplotlib import pyplot
5 from pandas import *
6 import random
7
8 x = [{i:random.randint(1,5)} for i in range(10)]
9 df = DataFrame(x)
10
11 df.plot(kind='bar', stacked=True)

输出是这样的:

enter image description here

最佳答案

您可以将 color 选项作为列表直接指定给 plot 函数。

from matplotlib import pyplot as plt
from itertools import cycle, islice
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.
my_colors = list(islice(cycle(['b', 'r', 'g', 'y', 'k']), None, len(df)))

# Specify this list of colors as the `color` option to `plot`.
df.plot(kind='bar', stacked=True, color=my_colors)

要定义您自己的自定义列表,您可以执行以下一些操作,或者只需查找 Matplotlib 技术以通过其 RGB 值定义颜色项等。您可以根据需要变得复杂。

my_colors = ['g', 'b']*5 # <-- this concatenates the list to itself 5 times.
my_colors = [(0.5,0.4,0.5), (0.75, 0.75, 0.25)]*5 # <-- make two custom RGBs and repeat/alternate them over all the bar elements.
my_colors = [(x/10.0, x/20.0, 0.75) for x in range(len(df))] # <-- Quick gradient example along the Red/Green dimensions.

最后一个示例为我生成了以下简单的颜色渐变:

enter image description here

我没有玩足够长的时间来弄清楚如何强制图例拾取定义的颜色,但我相信你可以做到。

不过,一般来说,一个重要的建议是直接使用 Matplotlib 中的函数。从 Pandas 调用它们是可以的,但我发现直接从 Matplotlib 调用它们可以获得更好的选择和性能。

关于python - 如何给 pandas/matplotlib 条形图自定义颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11927715/

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