从4月5号到18号研究了两周的matplotlib,算是小有收获。网上关于matplotlib的使用大大小小问题的回答并不是很全面比较零碎,有些还是得靠摸索。这段时间主要研究了水平柱状图和折线图的使用,总结并记录一下。
水平柱状图
# 导入绘图包,分别导入避免出错,尽量不用from pylab import *
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as patches
第一步,一定是定义一个画布
# 绘图窗口尺寸(6英寸,5英寸),分辨率120,背景颜色设置为白色
plt.figure(figsize=(6,5),dpi=120,facecolor='white')
# 可显示中文字,字体为雅黑
plt.rcParams['font.sans-serif'] = ['SimHei']
# 刻度值可以显示负数,避免显示问题
plt.rcParams['axes.unicode_minus'] = False
# 可以调用各种风格,这个风格无边框,不用额外设置,看着干净,用的比较多
# 可以使用plt.style.available获取所有美化样式,选择一个合适的
plt.style.use('fivethirtyeight')
# 如果用自己下载的字体,开头导入FontProperties和os模块的一些函数
from os.path import abspath, sep
from os import getcwd
from matplotlib.font_manager import FontProperties
myFont = FontProperties(fname=getcwd()+sep+'fonts'+sep+'STKAITI.TTF',size=12)
第二步,我自己把水平柱状图分为单柱和多柱。
# 不管多少柱,保持x和y对应的值的数量相同
width = 0.1 # 设置柱状图的宽度
x1 = [1.1,2,3.1,4.6,5] # 5个值
# x2 = [0.85] # 1个值
y1 = [0,1,2,3,4] # 也要5个值
# y2 = [0] # 也要1个值
y_labels = ['xxx','xxx','xxx','xxx','xxx'] # 5个标签对应5个值
idx = np.arange(len(x1))
# idx = np.arange(len(x2))
第三步,画图
# 可设置的参数很多,width,height,align,facecolor,edgecolor,alpha,label,zorder
# 通常align设置为center不用去调idx值对齐;alpha可以调透明度,越小越透明;zorder表示层级
# zorder=2的图像覆盖到zorder=1之上
plt.barh(
idx,x1,
width,
facecolor = 'blue',
edgecolor = 'white',
alpha = 0.3,
zorder = 1,
label = 'xxx')
第四步,设置辅助显示层的一些参数
- title常用参数
fontsize设置字体大小,默认12,可选参数 [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]
fontw