
提供信息的可视化是数据分析的重要任务之一,从本章开始会比较详细介绍绘图与可视化有关知识,主要用到的库有matplotlib、numpy、pandas和seaborn。
matplotlib库是Python中绘制二维、三维图表的数据可视化工具,能通过使用简单语句实现复杂绘图效果。
本节将以一些简单的图表图形作为切入点,来简单了解一下matplotlib基础用法。
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #能够使中文正常显示,例如横纵坐标轴文字
plt.rcParams['axes.unicode_minus'] =True #用来正常显示正负号
mpl.rcParams['font.size'] = 16 #设置字号
x = np.linspace(0, 10, 100) #从0-10均匀分为100份
y = np.sin(x)
plt.xlabel('横坐标') #命名横坐标
plt.ylabel('纵坐标') #命名纵坐标
plt.plot(x, y) #绘制折线图
一般来说,绘制不同种类的图形语法是:plt.图形种类,图形种类会后面介绍。
另外的,如果想要为图形限定x,y轴范围,可以使用plt.xlim(a, b)和plt.ylim(a, b)函数;
plt.xlim(-1, 10) #限定x轴范围
plt.ylim(-2, 2) #限定y轴范围
plt.plot(x, y) #绘制折线图
可以看到x轴和y轴的范围已被改变。
也可以使用plt.axvspan绘制垂直于x轴的参考区域,语法如下:
plt.axvspan(xmin, xmax, facecolor, alpha),xmin为最小x参考值;xmax为最大x参考值;facecolor为参考区域填充颜色;alpha为填充区域的透明度。plt.axhspan是绘制垂直y轴的参考区域,用法同axvspan。
plt.axvspan(xmin = 3, xmax = 5, facecolor = 'green', alpha = 0.3) #绘制垂直x轴参考线
plt.axhspan(ymin = -0.3, ymax = 0.3, facecolor = 'green', alpha = 0.3) #绘制垂直y轴参考线
plt.plot(x, y) #绘制折线图
使用axhline可以绘制平行于x轴的水平参考线,语法如下:
plt.axhline(y, c, ls, lw)
y:水平参考线出发点
c:线条颜色
ls:线条样式
lw:线条宽度
同样可以使用plt.axvline绘制平行y轴的水平参考线,语法同上。
plt.axhline(y = 0.8, c = 'red', ls = '--', lw = 2) #绘制平行x轴参考线
plt.axvline(x = 7, c = 'red', ls = '--', lw = 2) #绘制平行y轴参考线
plt.plot(x, y)
使用annotate函数添加图形细节的指向型注释文本,语法如下:
plt.annotate(string, xy, xytext, weight, color, arrowprops=dict(arrowstyle, connectionstyle, color))
string:图形内容注释文本
xy:被注释图形内容的位置坐标
xytext:注释文本的位置坐标
weight:注释文本的字体粗细风格
arrowprops:指示被注释内容的箭头属性字典
plt.annotate('最高点', xy = (np.pi/2, 1), xytext = (3, 0.6), weight = 'bold', color = 'black',
arrowprops = dict(arrowstyle = '->', connectionstyle = 'arc3', color = 'black'))
plt.plot(x, y)
使用text函数添加图形内容的无指向型注释,语法如下:
plt.text(x, y, string, weight, color)
x:注释文本的x坐标
y:注释文本的y坐标
string:注释文本
weight:注释文本的粗细风格
color:注释文本颜色
同样可以使用title添加标题,用法比较简单,plt.title(标题)。
同时,所有涉及文字的,都可以用fontsize参数设置大小,fontfamily设置字体(楷体,宋体等),根据以前经验,有的字体用拼音即可调用,不过一般是首字母大写,具体可以自行探索。
plt.text(7, -1, '警戒线', weight = 'bold', color = 'black', fontsize = 14) #在x=7,y=-1处标记‘警戒线’文字
plt.text(9, 0.65, '警戒线', weight = 'bold', color = 'black', fontsize = 14)
plt.title('正弦函数', fontsize = 20, fontfamily = 'KaiTi') #字号20,字体为楷体
plt.plot(x, y)
使用legend设置图例,语法如下:
plt.legend(loc)
loc:图例在图中的位置,值有best,upper right,upper left,lower left,lower right,right,center left,center,right,lower center,upper center,center
其他参数以后会专门一节讲述。
plt.plot(x, y, label = 'y=sin(x)')
plt.legend(loc = 'best', fontsize = 14) #legend一定要放到plt.plot后面
plt.show() #可以使用plt.show()展示图形
同样的,也可以在plt.plot中使用ls和lw指定线条样式和宽度。更详细的介绍可以查看官网或者网上查询,一般来说官网可以解决大多数问题。