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




matplotlib安装 matplotlib柱状图 (7)

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

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


Answers

看看prettyplotlib图书馆 - 最近刚刚由朋友指出 - 修改matplotlib以更好地与Edward Tufte的想法保持一致,以及Cynthia Brewer对色彩感知的一些非常仔细研究的工作。


Seaborn软件包(基于Matplotlib)具有很好的默认图形样式,我发现它是创建吸引人的颜色循环的好方法。

他们在这里讨论了色板: https://stanford.edu/~mwaskom/software/seaborn/tutorial/color_palettes.html ://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预设,例如灰色背景,只需导入seaborn

import seaborn.apionly as sns


这个问题是在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')


对于可以与matplotlib一起使用的更丰富的颜色,请查看可palettable ,其中包括精美的Wes Anderson托盘。

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

您可以使用matplotlib的colormap功能。

this问题就是一个很好的例子。 您可以使用此脚本显示colormap选项。


您可以采用的一种方法是从set派生一个新类,该类本身使用从int派生的类型的随机对象。

然后,您可以使用pop选择随机元素,如果它不是salt类型,则重新插入并返回它,但如果它是salt类型,则插入一个新的,随机生成的salt对象(并弹出以选择一个新对象)。

这将倾向于改变选择对象的顺序。 平均而言,尝试次数将取决于腌制元素的比例,即摊销的O(k)性能。







python matplotlib