Matplotlib数据可视化基础
一、绘制基本图形
1、绘制折线图
import numpy as np
import matplotlib.pyplot as plt
#创建数组x
x = np.arange(10)
np.random.seed(500)
#创建数组y
y = np.random.randint(20,size=(10,))
plt.plot(x,y,'b-')
plt.xticks(fontsize = 15)
plt.yticks(fontsize = 15)
plt.show()
2、线条属性的设置
颜色设置:
b:蓝色
g:绿色
r:红色
.......
线条设置:
‘-’:实线
‘--’:短画虚线
‘-.’:点画线
‘:’:点虚线
3、图标题、坐标轴标题和坐标轴范围设置
#为了显示中文,指定默认字体
plt.rcParams['font.sans-serif'] = ['SimHei']
#坐标轴标题
plt.title
plt.xlabel
plt.ylabel
4、绘制多图与图例的设置
#第一条线的参数
plo1, = plt.plot(x,y1,'r--',marker='o',linewidth=1)
#第二条线的参数
plo2, = plt.plot(x,y2,'g-',marker='+',linewidth=2)
#loc表示图例放置的位置,可以使用位置字符串,也可以使用位置代码
plt.legend((plo1,plo2),('开盘价','收盘价'),loc=4,fontsize=15,numpoints=3)
#numpoints参数设置二维线状图像显示在图例上的点的数量。
请注意:在上名的前两行代码左边表达式均有一个逗号。
这是因为plot返回的不是二维折线对象本身,而是产生的一个列表,
加上一个逗号,可以把二维折线对象给分解出来。
5、散点图
可以利用scatter来绘制散点图
import numpy as np
import matplotlib.pyplot as plt
#读取数据
a1 = np.loadtxt('array1.txt',delimiter=',',unpack=True,usecols=(4,),dtype=np.float32,skiprows=1)
x = np.arange(len(a1))
#设置散点图,marker值有点,o和*
plt.scatter(x,a1,c='r',marker='o')
plt.rcParams['font.sans-serif'] = ['SimHei']
6、直方图
直方图是一种统计报告图,是数值数据分布的图形表示,由一系列条形组成。构建直方图的第一步是将数据的统计范围分成多个区段,然后计算分别有多少个数据落在相应的区段内,再根据每个区段的统计数据个数来绘制条形的高度。
import numpy as np
import matplotlib.pyplot as plt
a1 = np.loadtxt('array2.txt',delimiter=',',unpack=True,usecols=(4,),dtype=np.int_,skiprows=1)
bins = np.arange(5,15,0.2)
plt.hist(a1,bins,rwidth=0.8)
7、饼图
matplotlib.pyplot模块中的函数pie()用于绘制饼图。
import matplotlib.pyplot as plt
persons = [33,65,30,30]
majors = ['信息管理与信息系统','应用统计','经济统计','数据科学与大数据技术']
color = ['c','r','b','g']
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(figsize=(7.5,5))#设置图像大小
plt.pie(persons,labels=majors,colors=color,startangle=90,shadow=True,explode=(0.1,0,0.1,0),autopct='%.1f%%',textprops={'fontsize':15})
plt.title('各专业新生人数分布',fontsize=18)
plt.show()
二、绘制多轴图
1、用subplot()函数绘制多轴图
#创建图像
pt.figure(figsize=(11,7))
#创建子图
ax1 = pt.subplot(2,2,1)
ax2 = pt.subplot(2,2,2)
ax3 = pt.subplot(2,2,3)
ax4 = pt.subplot(2,2,4)
2、多轴图的轴展开与遍历
定义好多轴的行数和列数后,通过axis.ravel()方法展开轴,可以对每个依次遍历来操作各个子图。
import matplotlib.pyplot as pt
a1,a2,a3,a4 = np.loadtxt('array2.txt',delimiter=',',usecols=(1,2,3,4),unpack=True,skiprows=1)
x = np.arange(len(a1))
pt.rcParams['font.sans-serif'] = ['SimHei']
a = [a1,a2,a3,a4]
colors = ['red','green','black','blue']
linestyles= ['solid','dashed','dashdot','dotted']
labels = ["开盘价",'收盘价','最高价','最低价']
fig,axes = pt.subplots(ncols=2,nrows=2)
#创建图像
pt.figure(figsize=(11,7))
for ax,price,color,linestyle,label in zip(axes.ravel(),a,colors,linestyles,labels):
ax.plot(x,price,color=color,linestyle = linestyle)
pt.sca(ax)
pt.xticks(fontsize=15)
pt.yticks(fontsize=15)
pt.title(label,fontsize=12)
pt.xlabel("时间顺序",fontsize=15)
pt.ylabel(label,fontsize=15)
pt.subplots_adjust(wspace=0.2,hspace=0.5)
pt.show()
三、坐标轴的刻度标签
默认情况下,图形坐标轴上的刻度文字标签可能不能满足用户的需求,可以通过设置来改变刻度上的标签文本。
可以使用week、calendar等作为横坐标
以下是可以使用matplotlib绘制的图形:
- 坐标轴的主次刻度、网格设置
- 移动坐标轴
- 文字说明和注释
- 显示图片
- 日期作为横坐标
- 绘制横线与竖线作为辅助线
- 箱线图
- 小提琴图
- 热力图
- 填充图
- 等高线图
- 绘制三维图表
- 三维折线图
- 三维曲面图