使用prettyplotlib创建优雅的散点图:从默认样式到专业可视化
默认matplotlib散点图的问题
matplotlib作为Python中最流行的数据可视化库,其默认样式直接借鉴了MATLAB的风格,这导致了一些美学上的不足。最明显的问题是:
- 默认颜色循环不够美观
- 散点图不会自动应用颜色循环
- 点标记缺乏层次感和视觉区分度
import matplotlib.pyplot as mpl_plt
import numpy as np
np.random.seed(12)
fig, ax = mpl_plt.subplots(1)
for i in range(8):
x = np.random.normal(loc=i, size=1000)
y = np.random.normal(loc=i, size=1000)
ax.scatter(x, y, label=str(i))
ax.legend()
ax.set_title('默认matplotlib散点图示例')
逐步优化散点图视觉效果
第一步:改进颜色方案
使用ColorBrewer的Set2配色方案替代默认颜色:
import brewer2mpl
set2 = brewer2mpl.get_map('Set2', 'qualitative', 8).mpl_colors
for i in range(8):
color = set2[i]
ax.scatter(x, y, label=str(i), color=color)
第二步:添加透明度
通过alpha参数(0-1之间)增加点的透明度,提高重叠区域的可见性:
ax.scatter(x, y, label=str(i), color=color, alpha=0.5)
第三步:添加点标记边框
为点标记添加细边框可以增强视觉层次感:
ax.scatter(x, y, label=str(i), alpha=0.5,
edgecolor='black', facecolor=color, linewidth=0.15)
第四步:优化坐标轴样式
移除顶部和右侧的坐标轴线,精简可视化:
# 移除顶部和右侧轴线
spines_to_remove = ['top', 'right']
for spine in spines_to_remove:
ax.spines[spine].set_visible(False)
# 移除所有刻度线
ax.xaxis.set_ticks_position('none')
ax.yaxis.set_ticks_position('none')
第五步:使用深灰色替代纯黑
纯黑色在视觉上过于强烈,使用深灰色(#262626)更加柔和:
almost_black = '#262626'
ax.scatter(x, y, edgecolor=almost_black, ...)
# 调整坐标轴线颜色和粗细
for spine in ['bottom', 'left']:
ax.spines[spine].set_linewidth(0.5)
ax.spines[spine].set_color(almost_black)
第六步:优化图例
默认图例有多余的边框和重复标记,优化方案:
light_grey = np.array([248/255]*3) # 浅灰色背景
legend = ax.legend(frameon=True, scatterpoints=1)
rect = legend.get_frame()
rect.set_facecolor(light_grey)
rect.set_linewidth(0.0)
# 设置图例文本颜色
for t in legend.texts:
t.set_color(almost_black)
prettyplotlib的一站式解决方案
经过上述6个步骤的优化,我们终于得到了一个专业的散点图。而prettyplotlib将这些优化封装成简洁的API:
import prettyplotlib as ppl
from prettyplotlib import plt
fig, ax = plt.subplots(1)
for i in range(8):
ppl.scatter(ax, x, y, label=str(i))
ppl.legend(ax)
ax.set_title('使用prettyplotlib创建的优雅散点图')
prettyplotlib的主要优势包括:
- 内置美观的ColorBrewer配色方案
- 自动优化点标记的透明度和边框
- 精简的坐标轴系统
- 专业设计的图例样式
- 一致的视觉风格
通过使用prettyplotlib,数据分析师和科研人员可以节省大量图表美化时间,专注于数据本身的洞察和发现。这个库特别适合需要频繁创建出版级质量图表的研究人员和数据科学家。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考