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

Ran*_*son 45 python matplotlib

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

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

gca*_*tes 56

您可以使用Matplotlib的样式表.它已从mpltools库中移植,该具有重新定义matplotlib rc参数的样式模块.

例如,请参阅ggplot样式Matplotlib手册的使用.

图片

  • 看来这个包现在包含在matplotlib中:http://matplotlib.org/users/style_sheets.html (6认同)

wom*_*ire 28

这个问题是2年前提出来的,今天为你的情节获得更好的风格要容易得多.你甚至不需要外部包.正如@asmaier在评论中提到的,mpltools.style功能已集成到Matplotlib 1.4中,因此您可以使用以下方式切换样式:

plt.style.use(style_name)
Run Code Online (Sandbox Code Playgroud)

例如:

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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您可以列出所有可用的样式:

print plt.style.available
Run Code Online (Sandbox Code Playgroud)

在Matplotlib 1.5中添加了几种新样式,包括Seaborn项目中的许多样式:

plt.style.use('seaborn-dark-palette')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 样式的演示位于 https://matplotlib.org/gallery/style_sheets/style_sheets_reference.html,如果您尝试一些,您将需要 `plt.style.use('default')` 来重置应用新样式之前的样式,因为样式是可组合的。 (2认同)

Mar*_*P S 25

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

  • 请注意,根据github页面,不再维护prettyplotlib,维护者建议使用seaborn(https://seaborn.pydata.org/index.html)包,它也支持prettyplotlib配色方案. (2认同)

Dan*_*ein 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果你只是想改变线条颜色而不是使用其他的seaborn预设,比如灰色背景,那就输入seaborn with

import seaborn.apionly as sns
Run Code Online (Sandbox Code Playgroud)