python数据挖掘 - matplotlib绘图篇

Matplotlib画图(折线图、散点图、柱状图、直方图、饼状图)

Matplotlib可分容器层、辅助显示层、图像层去理解,不同的层专门做不同的操作与图像控制,成体系理解有助于找到图像问题,更加灵活绘制、修改图片。

在这里插入图片描述

常用命令
命令解释
plt.figure(figsize=(20,5),dpi=100)创建画布,figsize指定长宽,dpi指定清晰度
plt.plot([x1,x2],[y1,y2],color=“g”,linestyle=‘–’,label=“GZ”)将数据画入,label表示图例
plt.show()展示当前图片
plt.yticks()、plt.xticks()设置横纵坐标
plt.xlabel(‘’)、plt.ylabel(‘’)、plt.title(‘’)设置横纵坐标名称、图片标题
plt.grid(True,linestyle=‘-’,alpha=0.5)网格线,alpha指定透明度
subplots分区域,返回两个参数(对象)
图片类别
命令类型-用途
plot折线图:趋势/变化
scatter散点图:关系/规律
bar柱状图:统计/对比(比较数据大小)
histogram(hist)直方图:分布状况(展示数据分布)
pie饼状图:占比分析

折线图

import matplotlib.pyplot as plt
import random

# 随机生成两列温度数据,一行时间x坐标轴
y_guangzhou = [random.uniform(20,25) for i in range(60)]
y_beijing = [random.uniform(1,3) for i in range(60)]
x_label = ["11点{}分".format(i) for i in range(60)]

# 创建画布
plt.figure(figsize=(20,10),dpi=100)
# 放入x、y的数据,
plt.plot(x_label,y_guangzhou,color='g',linestyle='--',label='广州')
plt.plot(x_label,y_beijing,color='b',linestyle='-.',label='北京')
# 为了让上面的图例label显示出来
plt.legend()
# 坐标轴隔多少显示一个(步长)
plt.yticks(range(0,41)[::5])
plt.xticks(x_label[::5])
# 网格
plt.grid(True,linestyle='-.',alpha=0.5)
# x坐标、y坐标和标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("广州 - 北京某时刻温度变化")
plt.show()


## 如遇中文显示问题,执行以下代码:
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题

在这里插入图片描述

双图示例(对象操作)

# 返回两个参数(对象)
# subplots的使用,1行2列
figer,axes = plt.subplots(nrows=1,ncols=2,figsize=(30,8),dpi=180)
axes[0].plot(x_label,y_guangzhou,color='g',linestyle='--',label='广州')
axes[1].plot(x_label,y_beijing,color='b',linestyle='-.',label='北京')
axes[0].legend()
axes[1].legend()
axes[0].set_yticks(range(0,41)[::5])
axes[0].set_xticks(x_label[::5])
axes[1].set_yticks(range(0,41)[::5])
axes[1].set_xticks(x_label[::5])
axes[0].grid(True,linestyle="--",alpha=0.5)
axes[1].grid(True,linestyle="--",alpha=0.5)
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("广州某时刻温度变化")
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("北京某时刻温度变化")
plt.show()

在这里插入图片描述

散点图

import numpy as np
x = np.linspace(-10,10,100)
y = x*2*x

plt.figure(figsize=(20,10),dpi=80)
plt.scatter(x,y)
plt.grid(True,linestyle="--",alpha=0.5)
plt.yticks(range(300)[::50])
plt.xticks(range(-10,11)[::2])
plt.show()

在这里插入图片描述

柱状图

# 数据准备
move_name = ["肖申克的救赎","长津湖","复仇者联盟","喜羊羊","熊出没"]
day01 = [1000,800,500,200,1000]
tickes = [9000,10000,8000,5000,11000]

plt.figure(figsize=(20,10),dpi=80)
plt.bar(move_name,tickes,color=['b','r','g','y','c'],width=0.5)
plt.grid(True,linestyle="--",alpha=0.5)
plt.title("电影票房统计")

在这里插入图片描述

# 柱状图2,增加首日票房对比
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(5),day01,width=0.2,label="首日票房")
plt.bar([0.2,1.2,2.2,3.2,4.2],tickes,width=0.2,label="一周票房")
plt.grid(True,linestyle="--",alpha=0.5)
plt.legend()
plt.xticks([0.1,1.1,2.1,3.1,4.1],move_name)
plt.show()

在这里插入图片描述

直方图

# 随机生成200个电影时长
time = [int(random.uniform(100,181)) for i in range(200)]
plt.figure(figsize=(20,8),dpi=80)
group=40
# 数据集,组数,显示方式为频率(默认不写是频数)
plt.hist(time,bins=group,density=True)
plt.xticks(range(100,181,2))
plt.grid(linestyle="--",alpha=0.5)
plt.xlabel("时长分布")
plt.ylabel("频数统计")
plt.title("电影时长分布直方图")
plt.show()

在这里插入图片描述

直方图与柱状图的区别
  • 直方图展示数据的分布,柱状图比较数据的大小
  • 直方图X轴为定量数据,柱状图X轴为分类数据
  • 直方图柱子无间隔,柱状图柱子有间隔
  • 直方图柱子宽度可不一,柱状图柱子宽度须一致

饼状图

# 数据准备
move_name = ["肖申克的救赎","长津湖","复仇者联盟","喜羊羊","熊出没"]
tickes = [9000,10000,8000,5000,11000]

plt.figure(figsize=(20,8),dpi=80)
# autopct:显示百分比
plt.pie(tickes,labels=move_name,colors=['b','r','g','y','c'],autopct="占%1.2f%%")
# 调节坐标比例,使长宽一致
plt.axis('equal')
# 显示图例
plt.legend()
plt.show()

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值