数据分析——Matplotlib图形绘制

创建画布或子图

函数名称 函数作用
plt.figure 创建一个空白画布,可以指定画布大小,像素。
figure.add_subplot 创建并选中子图,可以指定子图的行数,列数,与选中图片编号。
 

绘制图形

函数名称 函数作用
plt.title 在当前图形中添加标题,可以指定标题的名称,位置,颜色,字体大小等参数。
plt.xlabel 在当前图形中添加x轴名称,可以指定位置,颜色,字体大小等参数。
plt.ylabel 在当前图形中添加y轴名称,可以指定位置,颜色,字体大小等参数。
plt.xlim 指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识。
plt.ylim 指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识。
plt.xticks 指定x轴刻度的数目与取值
plt.yticks 指定y轴刻度的数目与取值
plt.legend 指定当前图形的图例,可以指定图例的大小,位置,标签。
 

保存和显示图形

函数名称 函数作用
plt.savafig 保存绘制的图片,可以指定图片的分辨率,边缘的颜色等参数。
plt.show 在本机显示图形。
 

先导入第三方库和数据

import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('./data.csv',encoding= 'gbk',engine='python')
data.head()

绘制散点图

# scatter散点图
plt.figure(figsize=(16,9))
plt.scatter(x= data.iloc[:,1],y=data.iloc[:,2])
plt.show()
 
什么都没有,有点丑。。。。。。先加个xy轴先。
# 图的基本设置
plt.figure(figsize=(16,9))
plt.scatter(x= data.iloc[:,1],y=data.iloc[:,2])
plt.title('散点图')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.show()
 
中文无法显示,将plt设置一下。
# 可移植代码
plt.rcParams['font.sans-serif'] = 'SimHei' ##设置字体为SimHei显示中文
plt.rcParams['axes.unicode_minus'] = False ##设置正常显示符号
# 旋转45°
plt.figure(figsize=(16,9))
plt.scatter(x= data.iloc[:,1],y=data.iloc[:,2])
plt.title('散点图')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.xticks(rotation=45)
plt.show()
 
# 减少x轴刻度
plt.rcParams['font.sans-serif'] = 'SimHei' ##设置字体为SimHei显示中文
plt.rcParams['axes.unicode_minus'] = False ##设置正常显示符号
plt.figure(figsize=(4,3))
plt.scatter(x= data.iloc[:,1],y=data.iloc[:,2])
plt.title('散点图')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.xticks(data.iloc[0:data.shape[0]:4,1],rotation=45)
plt.show()
 
# 修改x轴刻度上的值
plt.rcParams['font.sans-serif'] = 'SimHei' ##设置字体为SimHei显示中文
plt.rcParams['axes.unicode_minus'] = False ##设置正常显示符号
plt.figure(figsize=(4,3))
plt.scatter(x= data.iloc[:,1],y=data.iloc[:,2])
plt.title('散点图')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.xticks(data.iloc[0:data.shape[0]:4,1],range(18),rotation=45)
plt.show()
 
# 循环画图
# 加入图例说明,搞定
plt.figure(figsize=(16,9))
for i in range(2,10):
    plt.scatter(x= data.iloc[:,1],y=data.iloc[:,i])
plt.title('散点图')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.xticks(data.iloc[0:data.shape[0]:4,1],range(18),rotation=45)
plt.legend(data.columns[2:10])
plt.show()

绘制折线图

  所有图基本都是一样的画法,只是函数不同而已,只要掌握了一种就全会了的,所以不再详讲。

## 创建画布
plt.figure(figsize=(16,9)) ## 创建画布并设定画布大小
## 使用循环绘制图形
colors = ['red','yellow','blue','green']## 设定颜色
lineStyle = ['-',':','-.','--'] ## 设定线条类型
Mark = ['o','D','+','*'] ## 设定点的类型
for i in range(4):
    plt.plot(X[:,i],color=colors[i],linestyle=lineStyle[i],marker = Mark[i])
plt.title('iris数据四个特征的折线图')## 添加标题
plt.xlabel('index') ## 添加x的标签
plt.ylabel('value')##添加y的标签
plt.xlim((0,170)) ## 设定x轴的范围
plt.ylim((0,10)) ## 设定y轴的范围
plt.legend(names) ## 设定图例
plt.show() ## 显示图形

绘制柱状图

plt.figure(figsize=(10,8))
plt.bar(data.iloc[:,0],data.iloc[:,3],color='blue')
plt.xlabel('x轴') ## 添加x的标签
plt.ylabel('value')##添加y的标签
plt.show()
 
plt.figure(figsize=(10,8))
for i in range(2,10):
    plt.bar(data.iloc[:,0],data.iloc[:,i])
plt.xlabel('x轴') ## 添加x的标签
plt.ylabel('value')##添加y的标签
plt.legend(data.columns[2:10])
plt.show()

绘制饼图

## 饼图
plt.figure(figsize=(6,6))## 将画布设定为正方形,则绘制的饼图是正圆
label= data.iloc[::4,1]##定义饼状图的标签,标签是列表
#explode = [0.01]*data.shape[0]//4+2## 设定各项离心n个半径
plt.pie(data.iloc[::4,2],labels=label,autopct='%.3f%%')## 绘制饼图
plt.title('2017年第一季度各产业生产总值占比饼图')
plt.savefig('2017年第一季度各产业生产总值占比饼图.png')
plt.show()
 
 
但是这么多图突然让我觉得窗口有点多了,怎么办呢?
那就把他们放在一张图里吧。
## 子图
p = plt.figure(figsize=(10,10))
ax = p.add_subplot(2,2,1)
for i in range(2,10):
    plt.scatter(x= data.iloc[:,1],y=data.iloc[:,i])
plt.title('散点图')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.xticks(data.iloc[0:data.shape[0]:4,1],range(18),rotation=45)
plt.legend(data.columns[2:10])

ax = p.add_subplot(2,2,2)
#plt.figure(figsize=(10,8))
for i in range(2,10):
    plt.bar(data.iloc[:,0],data.iloc[:,i])
plt.xlabel('x轴') ## 添加x的标签
plt.ylabel('value')##添加y的标签
plt.legend(data.columns[2:10])

ax = p.add_subplot(2,2,3)
for i in range(2,10):
    plt.plot(data.iloc[:,i])

ax = p.add_subplot(2,2,4)
#plt.figure(figsize=(6,6))## 将画布设定为正方形,则绘制的饼图是正圆
label= data.iloc[::4,1]##定义饼状图的标签,标签是列表
#explode = [0.01]*data.shape[0]//4+2## 设定各项离心n个半径
plt.pie(data.iloc[::4,2],labels=label)## 绘制饼图
plt.title('各产业生产总值占比饼图')

plt.show()

绘制箱线图

## 创建画布
p = plt.figure(figsize=(16,4)) ## 创建画布并设定画布大小
## 使用循环绘制图形
for i in range(2,10):
    ax = p.add_subplot(1,8,i-1)
    plt.boxplot(data.iloc[:,i])
    plt.xlabel(data.columns[i]) ## 添加x的标签
    plt.ylabel('value')##添加y的标签
plt.show() ## 显示图形

猜你喜欢

转载自www.cnblogs.com/WoLykos/p/9417595.html