Python_tips-plot字体、旋转、标注点

万壑松风知客来,摇扇抚琴待留声

1. 简介

从开始接触 Python 时就对它的各种三方库感到着迷,因为这些小技巧总是让我们的编程变得简单。在他人的心血上,简单使用还不够,能够在不断调用中挖掘组合每个参数才是对他人的尊重。当然这是个人的理解,也会以这种心态不断学习,所以平时遇到好的方法尽量抽时间做一个记录,在不断的温习中掌握知识,这是没有捷径的。

使用 Python 原生绘图工具 matplotlib 已经有一段时间了,该方法绘图功能强大,当然带来的也是各种复杂的参数组合,尽管多次使用也是会有忘记的情况,所以这里对它的几个小方法做一个记录。

在绘制数据图时,部分时候是需要添加坐标信息的,一般情况下是没有问题的,但总会出现异常,所以下面列出几个小知识点。

1
2
3
4
5
6
7
8
9
10
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns

sns.set_style("whitegrid",{"font.sans-serif":['KaiTi', 'Arial']})
mpl.rcParams['axes.unicode_minus'] = False

y = np.array([10,5,4,3,7,7,8,9,4,4,9,8])
columns = ['横坐标一','横坐标二','横坐标三','横坐标四','横坐标五','横坐标六','横坐标七','横坐标八','横坐标九','横坐标十','横坐标十一','横坐标十二']

2. 设置标签字体大小

坐标字体字体过大怎么办?同样过小也可能存在。所以这里来看看如何修改绘图的坐标字体大小。

1
2
3
4
5
6
7
fig, ax = plt.subplots(1,2,figsize=(10,6))
ax[0].plot(columns,y)
ax[0].set_title('原始图')
ax[1].plot(columns,y)
ax[1].set_xticklabels(columns, fontsize=8) # 设置标签字体大小
ax[1].set_title('缩小横坐标字体效果')
plt.show()

3. 设置标签旋转

通过旋转标签可以作为一种样式,也可以更好的展现坐标信息。

1
2
3
4
5
6
7
fig, ax = plt.subplots(1, 2, figsize=(10,6))
ax[0].plot(columns,y)
ax[0].set_title('原始图')
ax[1].plot(columns,y)
ax[1].set_xticklabels(columns, rotation=45) # 设置标签旋转
ax[1].set_title('旋转横坐标字体效果')
plt.show()

4. 添加数据标注信息

有时在图像上面添加该位置数据可能展现效果更好。

1
2
3
4
5
6
7
8
fig, ax = plt.subplots(1, 2, figsize=(10,6))
ax[0].plot(columns,y)
ax[0].set_title('原始图')
ax[1].plot(columns,y)
for a,b in zip(columns, y):
ax[1].text(a, b, np.around(b, decimals=5), ha='center', va='bottom', fontsize=14, color='r') # 绘制标注点
ax[1].set_title('添加标注信息点效果')
plt.show()

text 更多的参数设置信息可以参考如下:

  1. fontsize 设置字体大小,默认12,可选参数 [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,’x-large’, ‘xx-large’]
  2. fontweight 设置字体粗细,可选参数 [‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]
  3. fontstyle 设置字体类型,可选参数[ ‘normal’ | ‘italic’ | ‘oblique’ ],italic斜体,oblique倾斜
  4. verticalalignment 设置水平对齐方式 ,可选参数 : ‘center’ , ‘top’ , ‘bottom’ , ‘baseline’
  5. horizontalalignment 设置垂直对齐方式,可选参数:left , right , center
  6. rotation (旋转角度)可选参数为: vertical , horizontal 也可以为数字
  7. alpha 透明度,参数值 0 至 1 之间
  8. backgroundcolor 标题背景颜色
  9. bbox给标题增加外框 ,常用参数如下:
    • boxstyle方框外形
    • facecolor (简写 fc )背景颜色
    • edgecolor (简写 ec )边框线条颜色
    • edgewidth 边框线条大小

5. 总结

细心的人可能已经发现了,上面几个知识点其实相似点很多,例如前两个效果都通过 set_xticklabels 函数实现,只是给定的参数不同;后两个效果的字体大小都是通过同名参数 fontsize 来设置。说明什么呢?一个函数中只需要调整不同参数就可以完成类似却效果不同的功能;在 Python 不同函数中很多参数名都是泛化的,在不同函数中名字相同,实现功能类似,在整个 Python 中这都是很适用的。

内容浅薄抛砖引玉,以后有相似绘图方法需要再记录的,会继续更新。