matplotlib中使用的默认颜色(例如:http://matplotlib.org/examples/pylab_examples/pie_demo.html)有点简单和丑陋。我还注意到,如果你在一个图中绘制超过5-6个不同的系列,matplotlib就会开始重复颜色。
我已经看到一些华丽的图形来自其他可视化软件包(默认情况下使用其他语言),可以有5-6个不同的系列,只有一种颜色可以覆盖不同的颜色。有没有人有一个很好的颜色设置在matplotlib中使用?还有一种方法可以让matplotlib默认使用它吗?
答案 0 :(得分:56)
您可以使用Matplotlib's style sheets。它已从mpltools library移植,其style模块重新定义了matplotlib rc参数。
例如,请参阅使用ggplot style和Matplotlib's manual。
答案 1 :(得分:25)
看看prettyplotlib一个图书馆 - 最近刚刚由朋友向我指出 - 修改matplotlib以更好地与Edward Tufte的想法保持一致,以及一些经过仔细研究的作品关于色觉的Cynthia Brewer。
答案 2 :(得分:25)
问题在2年前被问到,今天为你的情节获得更好的风格要容易得多。你甚至不需要外部包装。正如@asmaier在评论中提到的,mpltools.style功能已集成到Matplotlib 1.4中,因此您可以使用以下方式切换样式:
plt.style.use(style_name)
例如:
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('ggplot')
num_lines = 6
ax = plt.subplot(111)
for i in range(num_lines):
x = np.linspace(0,20,200)
ax.plot(x,np.sin(x)+i)
plt.show()
您可以列出所有可用的样式:
print plt.style.available
在Matplotlib 1.5中添加了几种新样式,包括Seaborn项目中的许多样式:
plt.style.use('seaborn-dark-palette')
答案 3 :(得分:14)
Seaborn包(基于Matplotlib)具有很好的默认图形样式,我发现它是创建吸引人的颜色循环的好方法。
他们在这里对色块进行了很好的讨论: https://stanford.edu/~mwaskom/software/seaborn/tutorial/color_palettes.html
以下代码演示了如何为简单的线图自动选择新的color_cycle:
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
num_lines = 6
ax = plt.subplot(111)
ax.set_color_cycle(sns.color_palette("coolwarm_r",num_lines))
for i in range(num_lines):
x = np.linspace(0,20,200)
ax.plot(x,np.sin(x)+i)
plt.show()
如果您只想更改线条颜色而不使用其他seaborn预设,例如灰色背景,只需使用
导入seabornimport seaborn.apionly as sns
答案 4 :(得分:4)
您可以设置.matplotlibrc
文件。一个真正评论很多的例子是here。在我看来,您想要更改的选项是axes.color_cycle
。我没有任何关于如何使它成为更漂亮的界面的建议 - 这有点过于主观Stack Overflow ;-)(我对默认值感到满意)
答案 5 :(得分:1)
您可以使用matplotlib的colormap功能。
一个很好的例子是this问题。您可以显示色彩映射选项using this script。
答案 6 :(得分:1)
对于可以与matplotlib
一起使用的更丰富的颜色,请查看palettable,其中包含精彩的Wes Anderson托盘。
$ pip install palettable
$ python
>>> from palettable.colorbrewer.qualitative import Dark2_7
答案 7 :(得分:0)