首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >尝试将颜色渐变添加到Matplotlib图表

尝试将颜色渐变添加到Matplotlib图表
EN

Stack Overflow用户
提问于 2018-06-09 05:21:53
回答 1查看 2.7K关注 0票数 1

我正在尝试为我的图表添加红色到绿色的渐变。但是,当我运行以下命令时,我得到:

代码语言:javascript
复制
TypeError: object of type 'Color' has no len()

下面是一段相关代码:

代码语言:javascript
复制
from colour import Color

red = Color("red")
colors = list(red.range_to(Color("green"),10))

for col in ['DISTINCT_COUNT', 'NULL_COUNT','MAX_COL_LENGTH', 'MIN_COL_LENGTH']: 
    grid[['COLUMN_NM', col]].set_index('COLUMN_NM').plot.bar(title=table_nm, figsize=(12, 8), color=colors)
    plt.xlabel('Column', labelpad=12)
    plt.tight_layout()
    plt.show()

如果我只运行顶部并打印结果,它似乎运行得很好:

代码语言:javascript
复制
red = Color("red")
colors = list(red.range_to(Color("green"),10))
print(colors)

[<Color red>, <Color #f13600>, <Color #e36500>, <Color #d58e00>, <Color #c7b000>, <Color #a4b800>, <Color #72aa00>, <Color #459c00>, <Color #208e00>, <Color green>]

所以,当我在这里尝试使用它时,它一定是:

代码语言:javascript
复制
grid[['COLUMN_NM', col]].set_index('COLUMN_NM').plot.bar(title=table_nm, figsize=(12, 8), color=colors)

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 05:35:20

Matplotlib无法与colour.Color实例一起工作。如果愿意,您可以将这些值转换为RGB值。

其次,熊猫不喜欢被赋予几种颜色。但是您可以使用matplotlib图来代替。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import pandas as pd
from colour import Color

df = pd.DataFrame({"x" : list(range(3,13))})

red = Color("red")
colors = list(red.range_to(Color("green"),10))
colors = [color.rgb for color in colors]

plt.bar(df.index, df["x"], color=colors)
plt.xlabel('Column', labelpad=12)
plt.tight_layout()
plt.show()

请注意,通常您更愿意使用色彩映射表。您可以使用归一化值调用此颜色映射表,以便根据这些值为条形图着色。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import pandas as pd
import numpy as np

df = pd.DataFrame({"x" : np.random.rand(10)*10})

cmap = mcolors.LinearSegmentedColormap.from_list("", ["red", "yellow", "green"])

plt.bar(df.index, df["x"], color=cmap(df.x.values/df.x.values.max()))
plt.xlabel('Column', labelpad=12)
plt.tight_layout()
plt.show()

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档