我想使用matplotlib的色图,例如CMRmap.但我不想在开头使用"黑色"颜色,最后使用"白色"颜色.我有兴趣使用中间颜色绘制我的数据.我认为人们经常使用它,但我在互联网上搜索,无法找到任何简单的解决方案.如果有人建议任何解决方案,我将不胜感激.
我正在使用pandas和matplotlib来生成包含大量条形图的条形图.
我知道如何循环选择所选颜色的列表(如何给出pandas/matplotlib条形图自定义颜色).问题是要选择什么颜色,以便我的图形可以很好地打印在纸上(这是一篇研究论文).我最感兴趣的是柱子和选择的颜色之间的足够对比,看起来很舒服.我想要多种颜色而不是灰度或单色调颜色.
是否有任何预定的方案可供人们使用?
有没有一种简单的方法来使用Pandas DataFrame.plot(kind='bar')方法按列名指定条形颜色?
我有一个脚本,可以从目录中的几个不同数据文件生成多个DataFrame.例如,它做这样的事情:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pds
data_files = ['a', 'b', 'c', 'd']
df1 = pds.DataFrame(np.random.rand(4,3), columns=data_files[:-1])
df2 = pds.DataFrame(np.random.rand(4,3), columns=data_files[1:])
df1.plot(kind='bar', ax=plt.subplot(121))
df2.plot(kind='bar', ax=plt.subplot(122))
plt.show()
Run Code Online (Sandbox Code Playgroud)
使用以下输出:

不幸的是,不同图中每个标签的列颜色不一致.是否可以传入(文件名:颜色)字典,以便任何特定列始终具有相同的颜色.例如,我可以想象通过使用Matplotlib color_cycle压缩文件名来创建它:
data_files = ['a', 'b', 'c', 'd']
colors = plt.rcParams['axes.color_cycle']
print zip(data_files, colors)
[('a', u'b'), ('b', u'g'), ('c', u'r'), ('d', u'c')]
Run Code Online (Sandbox Code Playgroud)
我可以直接用Matplotlib弄清楚如何做到这一点:我只是觉得可能有一个更简单的内置解决方案.
编辑:
下面是一个部分解决方案,适用于纯Matplotlib.但是,我在IPython笔记本中使用它,将分发给非程序员同事,我想尽量减少过多的绘图代码.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pds
data_files = ['a', 'b', 'c', 'd']
mpl_colors …Run Code Online (Sandbox Code Playgroud) 我希望在熊猫图表中为每个柱赋予不同的颜色。根据这篇文章和类似的文章,该解决方案看起来非常简单。
当我尝试模拟解决方案时,最终所有条形都使用相同的颜色(尽管与标准颜色不同)。我想我做错了什么,但我看不出它是什么。有人看到吗?
fig = df.plot(kind='bar', # Plot a bar chart
legend=False, # Turn the Legend off
width=0.75, # Set bar width as 75% of space available
figsize=(8,5.8), # Set size of plot in inches
colormap='Paired')
Run Code Online (Sandbox Code Playgroud)
这colormap='Paired'是要更改颜色的位。我得到这个:

很好,但是所有条形都是相同的颜色!如上所示,我正在对图进行其他更改,但它们都是文本格式或删除轴详细信息。
我正在尝试根据整数值向条形添加颜色,假设值是 1 到 20,1 是最亮的,20 是最暗的,但是没有一种颜色可以相同,到目前为止我是在使用不正确的colorbar方法时:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame({'values': [17, 16, 16, 15, 15, 15, 14, 13, 13, 13]})
df.plot(kind='barh')
plt.imshow(df)
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)
但它给出了一个奇怪的结果: