matplotlib介绍&基本使用&坐标系显示调整
一、框架结构:
1.后端层(Backend)
- 实现了大量抽象的接口类,这些API用来在底层实现图形元素的一个个类
- FigureCanvas对象实现了绘图区域这一概念
- Renderer对象在FigureCanvas上绘图
2.美工层(Artist)
- 图形中所有能看到的元素都属于Artist对象
- Figure:指整个图形
- Axes(坐标系)
- Axis(坐标轴)
3.脚本层(Scripting)
- pyplot模块就是我们调用matplotlib程序包的接口
二、基本使用流程:
1.创建一个figure
-
plt.figure(figsize=(20,8), dpi=80)
- figsize是大小,dpi是精度
2.准备x,y坐标的数据
3.画图,显示
-
plt.plot(x,y, label=“xxx”)
- 多次plot,可在同一个figure画多个折线图
-
plt.show()
三、常用API
1.入口API:matplotlib.pyplot
2.折线图
- 特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
- plt.plot(x,y, color=‘r’, label=‘xxxx’,linestyle=’–’, linewidth=3,marker=‘o’,markerfacecolor=‘blue’,markersize=20)(红色的 虚线)
- marker-显示点
3.直方图:
-
特点:绘制,连续性的数据展示一组或者多组数据的分布状况(统计)
-
plt.hist(x, bins=None, normed=None, **kwargs)
- bins:表示有多少个矩形框,density(旧库用normed):bool,optional,频率或者频数,默认频数,值1为频率
4.柱状图:
-
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)
-
plt.bar(x, width, align=‘center’, **kwargs)
- plt.bar(x, y, width=0.5, color=[‘b’,‘r’,‘g’,‘y’,‘c’,‘m’,‘y’,‘k’,‘c’,‘g’,‘g’])
5.散点图:
-
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
- plt.scatter()
-
pandas绘制两两特征之间相关性
- 两两关联散点图
- frame = data[[‘open’,‘volume’, ‘ma20’, ‘p_change’, ‘turnover’]]
- pd.plotting.scatter_matrix(frame, figsize=(20, 8))
6.饼图:
-
常用于:分类的占比情况(不超过9个分类)
-
plt.pie(x, labels=,autopct=,colors)
- x:数量,自动算百分比
- labels:每部分名称
- autopct:占比显示指定%1.2f%%
- colors:每部分颜色
四、坐标系显示效果调整
1.增加标题、x轴y轴描述信息
-
plt.xlabel(“时间”)、plt.ylabel(“价格”)、plt.title(“xxxxxxx”)
- 设置横纵坐标的名称以及对应字体格式
-
font2 = {‘family’ : ‘Times New Roman’,‘weight’ : ‘normal’,‘size’:20}
- plt.xlabel(“时间”,font2)、plt.ylabel(“价格”,font2)
2.美化x,y的刻度值 plt.xticks(参数1,参数2)
-
第一个参数必须是刻度数字类型,第二个是对应着第一个数字的中文描述
增加以下两行代码
# 构造中文列表的字符串 x_ch = ["11点{}分".format(i) for i in x] y_ticks = range(40) # 修改x,y坐标的刻度 plt.xticks(x[::5], x_ch[::5]) plt.yticks(y_ticks[::5])
3.刻度字体大小13
- plt.tick_params(labelsize=13) —刻度字体大小13
4.添加图形注释:
- plt.legend(loc=‘best’) —“best”是最佳显示,还有其他选择
5.annotate或者text添加图的注释
- plt.annotate( ‘这是一个拐点’, xy=(70, 1) , arrowprops=dict(arrowstyle=’->’), xytext=(50, 10))
- xy=(60, 10) # 箭头指向位置
- arrowprops=dict(arrowstyle=’->’) #自定义箭头样式
- xytext=(30, 5)) # 文本位置
- plt.text(30, 2, ‘这是一段文本’)
# 设置数字标签
x=['a','b','c','d']
y=[50,40,60,80]
plt.plot(x,y,marker='o')
for a,b in zip(x,y):
plt.text(a,b+2,b,ha='center',va='bottom',fontsize=15)
plt.legend() # 显示注释
plt.show()
6.图形本地保存:
- plt.savefig(PATH)