matplotlib绘图基本操作&美化教程

matplotlib绘图基本操作&美化教程

这次来整理一波python用matplotlib绘图的常用函数,以及如何修改默认死亡配色。

前期准备

导入包

1
2
3
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

基本设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
plt.figure()	# 创建画布
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体,不然中文无法显示

plt.rcParams['figure.figsize'] = (8.0, 4.0) # 设置figure_size尺寸
#figsize(12.5, 4) # 设置 figsize
plt.rcParams['savefig.dpi'] = 300 #保存图片分辨率
plt.rcParams['figure.dpi'] = 300 #分辨率
# 默认的像素:[6.0,4.0],分辨率为100,图片尺寸为 600&400
# 指定dpi=200,图片尺寸为 1200*800
# 指定dpi=300,图片尺寸为 1800*1200

plt.rcParams['image.interpolation'] = 'nearest' # 设置 interpolation style
plt.rcParams['image.cmap'] = 'gray' # 设置 颜色 style

plt.savefig('plot1.png', dpi=300) #指定分辨率保存

折线图

1
2
3
4
5
6
plt.plot(index, value, label='频率')
plt.grid(axis="y") # 坐标网格
plt.legend() # 图例
plt.xlabel('迭代次数') # x轴标题
plt.ylabel('亲缘度') # y轴标题
plt.xticks(size = 9,rotation = 30) # x轴标签旋转

plot

柱状图

1
2
3
data = [5, 20, 15, 25, 10]
plt.bar(data)
plt.show()

饼图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
plt.pie(x, explode=None, labels=None,
colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'),
autopct=None, pctdistance=0.6, shadow=False,
labeldistance=1.1, startangle=None, radius=None,
counterclock=True, wedgeprops=None, textprops=None,
center = (0, 0), frame = False )
'''
x (每一块)的比例,如果sum(x) > 1会使用sum(x)归一化
labels (每一块)饼图外侧显示的说明文字
explode (每一块)离开中心距离
startangle 起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
shadow 是否阴影
labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧
autopct 控制饼图内百分比设置,可以使用format字符串或者format function
'%1.1f'指小数点前后位数(没有用空格补齐)
pctdistance 类似于labeldistance,指定autopct的位置刻度
radius 控制饼图半径
'''

修改配色

默认的配色是真的丑,连我这种直男都看不下去了,虽然可以手动调整每一块的颜色,但这实在太艰难了。

尝试了几种方法,最后还是采用了这篇文章中的方法。

安装brewer2mpl

直接pip install brewer2mpl即可。

导入使用

这里给个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
import brewer2mpl
# 参照下方配色方案,第三参数为颜色数量,这个例子的范围是3-12,每种配色方案参数范围不相同
bmap = brewer2mpl.get_map('Set3', 'qualitative', 10)

colors = bmap.mpl_colors

plt.figure()
plt.rcParams['font.sans-serif'] = ['SimHei']
# 对于饼图
plt.pie(sub_count, labels=[x[0] for x in subjects], colors=colors)

# 或者直接修改配色方案
plt.rcParams['axes.color_cycle'] = colors

附上配色方案

配色方案

来看看效果,比原来的死亡配色好看多了。

效果

matplotlib绘图基本操作&美化教程

https://blog.luzy.top/posts/1237182484/

作者

江风引雨

发布于

2020-09-03

更新于

2020-09-06

许可协议

CC BY 4.0

评论