在matplotlib中更漂亮的默认绘图颜色

在matplotlib中使用的默认颜色(例如: http : //matplotlib.org/examples/pylab_examples/pie_demo.html )是一种简单和丑陋。 我也注意到,如果在一个绘图中绘制多于5-6个不同的系列,matplotlib会开始重复颜色。

我已经看到其他可视化软件包(其他语言,默认情况下)有一些华丽的图表,可以有5-6个不同的系列,只有一种颜色以不同的色调覆盖。 有没有人有一个很好的颜色设置在matplotlib中使用? 一种使matplotlib默认使用它的方法?

你可以使用Matplotlib的样式表 。 它已经从mpltools库中移植,它有一个重新定义matplotlib rc参数的样式模块。

作为例子,请参阅ggplot样式和Matplotlib手册的使用 。

图片

看一下图书馆的漂亮图书馆 – 最近朋友指出 – 这个图书馆修改了matplotlib,使其更好地与Edward Tufte的想法相一致,以及Cynthia Brewer在色彩感知方面的一些非常仔细研究的工作。

这个问题在两年前就已经提出了,今天为你的阴谋获得更好的风格要容易得多。 你甚至不需要外部的包。 正如@asmaier在他的评论中提到的,mpltools.stylefunction已经集成到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') 

在这里输入图像说明

Seaborn软件包(基于Matplotlib)具有很好的默认graphics样式,我发现这是创build一个吸引人的色彩循环的好方法。

他们在这里有一个很好的讨论: https ://stanford.edu/~mwaskom/software/seaborn/tutorial/color_palettes.html

下面的代码演示了如何自动为一个简单的线条图select一个新的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预设,只需要将seaborn导入

 import seaborn.apionly as sns 

你可以设置一个.matplotlibrc文件。 一个非常重要的例子是在这里 。 它看起来像你想改变的选项是axes.color_cycle 。 我没有任何build议,以使其更漂亮的界面 – 这是一个有点太主观堆栈溢出;-)(我很高兴与默认值)

您可以使用matplotlib的颜色映射function。

这个问题就是一个很好的例子。 你可以使用这个脚本显示你的颜色地图选项。

对于matplotlib可以使用的更丰富的颜色,请查看palettetable ,其中包含精彩的Wes Anderson托盘。

 $ pip install palettable $ python >>> from palettable.colorbrewer.qualitative import Dark2_7