本节会介绍数据处理过程中经常用到的可视化方法,主要涉及了python的matplotlib库
既然要画图,首先需要生成一张画布,使用内置的subplot方法生成一张画布,其中,返回值有两个,分别是fig和axs。其中:
fig:是一个 Figure
对象,代表整个图表,它是顶级容器。在这个图表中,你可以添加、修改或移除子图,调整图的大小和布局等。
axs:是一个包含多个 Axes
对象的二维数组(即具有行和列的网格布局),它代表了图表中的每一个子图。可以通过索引 axs[row_index][col_index]
来访问特定的子图。
#先生成多个画布,这里是2*2的
fig,axs=plt.subplots(2,2)
在下面的案例中,介绍了几种最常用的画图方式:
plot方法:绘制折线图
scatter方法:绘制散点图
bar方法:绘制条形图
pie方法:绘制饼图
show方法:展示图片
在这里,先掌握最基本的使用方法,在本文的后半部分,会介绍每个方法传入的实际参数
#对每个画布单独进行画图操作
#用plot绘制折线图
axs[0][0].plot([1,2,3,4,5],[6,7,8,9,10])
#用scatter绘制散点图
axs[0][1].scatter([1,2,3,4,5],[6,7,8,9,10])
#用bar绘制柱状图
x=np.random.randint(0,10,10)
y=np.arange(10)
axs[1][0].bar(x,y)
#用pie绘制饼图
label=['A','B','C','D','E']
axs[1][1].pie([10,12,14,15,13],labels=label)
plt.show()
结果如图所示:
下面,我们再来写一组绘图函数,在这组代码中,会详细介绍每个函数常用的实际传入参数:
首先,仍然生成2*2的图形窗格,这里,我们先给整个画布确定标题,方法如下:
fig,axs=plt.subplots(2,2)
fig.suptitle('案例演示')
plt.show()
下面,我们在axs[0][0]这个区域用plot画一个图,并设置参数
axs[0][0].plot([1,2,3,4,5],[5,4,3,2,1],color='red')
axs[0][0].set_title('折线图')
axs[0][0].set_xlabel('横坐标')
axs[0][0].set_ylabel('纵坐标')
plt.show()
在axs[0][1]区域用scatter画一个图,并设置参数
#alpha:设置散点的不透明度
axs[0][1].scatter([1,2,3,4,5],[3,4,2,5,1],color='black',alpha=0.5)
axs[0][1].set_title('散点图')
axs[0][1].set_xlabel('横坐标')
axs[0][1].set_ylabel('纵坐标')
plt.show()
在axs[1][0]用bar画一个图,并设置相应参数:
#width:调整柱子的宽度
axs[1][0].bar([1,2,3,4,5],[3,4,2,5,1],color='black',width=0.5)
axs[1][0].set_title('柱形图')
axs[1][0].set_xlabel('横坐标')
axs[1][0].set_ylabel('纵坐标')
plt.show()
在区域axs[1][1]画一个饼图,同时设置参数
#labels:设置饼图标签
#explode:设置分离度,(0,0,0,0.2,0)表示第四个位置的分离0.2
#autopct='&1.1f%%'表示显示百分数,并保留一位小数
axs[1][1].pie([1,2,3,4,5],labels=['A','B','C','D','E'],explode=(0,0,0,0.2,0),autopct='%1.1f%%')
axs[1][1].set_title('饼图')
axs[1][1].set_xlabel('横坐标')
axs[1][1].set_ylabel('纵坐标')
plt.show()
整体测试代码如下:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#设置默认使用中文字体
#先生成多个画布,这里是2*2的
# fig,axs=plt.subplots(2,2)
#对每个画布单独进行画图操作
#用plot绘制折线图
# axs[0][0].plot([1,2,3,4,5],[6,7,8,9,10])
# #用scatter绘制散点图
# axs[0][1].scatter([1,2,3,4,5],[6,7,8,9,10])
# #用bar绘制柱状图
# x=np.random.randint(0,10,10)
# y=np.arange(10)
# axs[1][0].bar(x,y)
# #用pie绘制饼图
# label=['A','B','C','D','E']
# axs[1][1].pie([10,12,14,15,13],labels=label)
# plt.show()
# fig,axs=plt.subplots(2,2)
# fig.suptitle('案例演示')
# plt.show()
# axs[0][0].plot([1,2,3,4,5],[5,4,3,2,1],color='red')
# axs[0][0].set_title('折线图')
# axs[0][0].set_xlabel('横坐标')
# axs[0][0].set_ylabel('纵坐标')
# plt.show()
#alpha:设置散点的不透明度
# axs[0][1].scatter([1,2,3,4,5],[3,4,2,5,1],color='black',alpha=0.5)
# axs[0][1].set_title('散点图')
# axs[0][1].set_xlabel('横坐标')
# axs[0][1].set_ylabel('纵坐标')
# plt.show()
# #width:调整柱子的宽度
# axs[1][0].bar([1,2,3,4,5],[3,4,2,5,1],color='black',width=0.5)
# axs[1][0].set_title('柱形图')
# axs[1][0].set_xlabel('横坐标')
# axs[1][0].set_ylabel('纵坐标')
# plt.show()
#labels:设置饼图标签
#explode:设置分离度,(0,0,0,0.2,0)表示第四个位置的分离0.2
#autopct='&1.1f%%'表示显示百分数,并保留一位小数
# axs[1][1].pie([1,2,3,4,5],labels=['A','B','C','D','E'],explode=(0,0,0,0.2,0),autopct='%1.1f%%')
# axs[1][1].set_title('饼图')
# axs[1][1].set_xlabel('横坐标')
# axs[1][1].set_ylabel('纵坐标')
# plt.show()