如果你是一名数据科学家,一定明白这个道理:无论你对数据的理解有多么深刻,最终的结论往往需要通过图表来呈现和传达。而对于读者而言,图表不仅要信息准确、逻辑清晰,最好还能赏心悦目,甚至带有时尚感。
坦率地说,标准的 Matplotlib 和 Seaborn 样式虽然强大,但用得多了难免让人觉得有些单调,有时甚至会让你的报告看起来不够用心。为了打破这种刻板印象,我为你找到了6个能够显著提升图表颜值的 Python 库。它们能在基础的线图、散点图、直方图上施展魔法,让你的可视化成果脱颖而出。每个库都附上了 GitHub 仓库链接,方便你深入探索。
首先,我们生成一些标准的综合数据。使用相同的DataFrame结构来创建4个子图,以便在公平的条件下对比各个库的视觉效果。
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
'''Generating points to create a scatter plot'''
def scatter():
x = np.random.random(100)
y = x-np.random.random(100)
z = np.random.randint(0,4,100)
df = pd.DataFrame({'X':x, 'Y': y, 'Z':z})
return df
'''Generating points to create a line plot'''
def line():
x = np.arange(0,10,0.1)
y_1 = np.sin(x)
y_2 = np.sin(x+5)
y_3 = np.sin(x+10)
y_4 = np.sin(x+15)
y_5 = np.sin(x+20)
df = pd.DataFrame({'X':x,'y_1':y_1, 'y_2':y_2,
'y_3':y_3, 'y_4':y_4, 'y_5':y_5})
return df
'''Sampling data from several distributions'''
def hist():
x_1 = np.random.normal(1,0.1,1000)
x_2 = np.random.gamma(1,0.25,1000)
x_3 = np.random.normal(0.4, 0.1,1000)
x_4 = np.random.normal(-0.1, 0.3,1000)
df = pd.DataFrame({'X_1': x_1, 'X_2':x_2, 'X_3': x_3, 'X_4':x_4})
return df
注意: 接下来的演示中,不会为图表指定特殊的颜色或图案,仅仅是在同一套绘图代码上应用不同库提供的整体风格。
1. Aquarel
Aquarel 库提供了 11 种 不同的样式,包含深色和浅色主题,可以通过 pip 轻松安装:
pip install aquarel
你可以通过上下文管理器来应用主题,这是非常Pythonic的方式:
with load_theme(“arctic_light”):
fig, ax = plt.subplots(ncols=2, nrows=2, figsize=(16,9))
df = scatter()
f= ax[0,0].scatter(df.X,df.Y, c=df.Z, s=50)
ax[0,0].set_xlabel(‘X data’)
ax[0,0].set_ylabel(‘Y data’)
handles, labels = f.legend_elements(prop=“colors”, alpha=0.6)
legend2 = ax[0,0].legend(handles, labels, loc=“lower right”)
df=line()
df.plot(x=‘X’, ax=ax[0,1])
df=hist()
sns.kdeplot(df, fill=True, ax=ax[1,0])
ax[1,0].set_xlabel(‘Value’)
sns.kdeplot(df, x=“X_1”, y=“X_2”, fill=True, ax=ax[1,1])
sns.kdeplot(df, x=“X_3”, y=“X_4”,fill=True, ax=ax[1,1])
ax[1,1].set_xlabel(‘Dist 1’)
ax[1,1].set_ylabel(‘Dist 2’)
plt.suptitle(‘Aquarel\narctic_light’, fontsize=24)
plt.savefig(‘arctic_light.jpg’)
plt.show()
或者,你也可以使用更传统的加载和应用方式:
from aquarel import load_theme
theme = load_theme(“arctic_light”)
theme.apply()
# ... plotting code here
theme.apply_transforms()
下面是应用 arctic_dark 和 arctic_light 两种主题后的效果对比:


2. Rosé Pine
第二个我特别喜欢的 Repo 并非一个标准的库,而是一组 .mplstyle 样式文件。你需要下载这些文件,然后通过指定路径让 Matplotlib 加载:
plt.style.use(‘./themes/rose-pine-moon.mplstyle’)
之后,沿用相同的绘图步骤即可。这个主题包的颜色搭配非常温和,同时保持了很高的对比度,视觉上很舒适。

3. Catppuccin
Catppuccin 库同样需要通过 pip 安装。它包含了4种不同风格(如 Latte, Frappé, Macchiato, Mocha),对应不同的明暗度。
matplotlib.style.use(“mocha”)

Catppuccin 还提供了一个有趣的功能:样式混合。你可以尝试将基础的 seaborn-v0_8-dark 样式表和 mocha 样式结合起来,创造出独一无二的效果。

4. mplcyberpunk
下一个库 mplcyberpunk 非常有名。谁不爱赛博朋克风格呢?这个库不仅提供了恰到好处的霓虹色彩和深色背景,还能为线条和标记添加炫酷的发光效果,视觉冲击力十足。

基本用法如下:
import matplotlib.pyplot as plt
import mplcyberpunk
plt.style.use(“cyberpunk”)
# ... 你的绘图代码
mplcyberpunk.add_glow_effects()
plt.show()
add_glow_effects() 函数可以为整个图表添加发光效果。你还可以使用更精细的方法,只为特定的线条添加辉光:
fig, ax = plt.subplots()
# ... 绘图
mplcyberpunk.make_lines_glow(ax)
通过对比下面这张图,你可以清晰地看到仅应用样式、添加线条发光、以及同时添加线条和下层辉光(underglow)三种效果的差异。

5. matplotx
matplotx 是 Matplotlib 的另一个强大扩展。它提供了超过20种不同的主题,适用于科研论文、学术报告或任何需要提升图表专业感和时尚感的场景。

你可以轻松地在多种风格间切换,例如 ‘ggplot’、‘ Solarized Light’,甚至是一些像 ‘Pitaya Smoothie’ 这样活泼的风格。

6. GruvBox
今天介绍的最后一个风格是 GruvBox。它同样不是一个可通过 pip 安装的库,而是一个独立的 .mplstyle 文件,使用时需要指定其路径:
matplotlib.style.use(“./gruvbox.mplstyle”)

尽管这个仓库里只有一个主题,但我个人非常喜欢它。其字体选择、线条粗细以及背景与前景颜色的搭配都显得复古又和谐,能瞬间让图表拥有一种独特的“个性”。
总结
以上就是6个能够极大改善 Matplotlib 图表外观的 Python 库和主题。从简约现代的 Aquarel,到温和的 Rosé Pine,从炫酷的 mplcyberpunk 到专业多样的 matplotx,它们覆盖了不同的审美和场景需求。在 人工智能 和数据驱动决策越来越重要的今天,一份出色的可视化报告不仅是分析结果的展示,更是专业能力和审美的体现。
不妨根据你的项目调性或个人喜好,尝试将这些风格应用到你的下一个 数据科学 项目中。如果你有更多关于可视化或 Python 的疑问,欢迎来 云栈社区 交流讨论。期待看到你创作出更惊艳的图表!