Matplotlib常见统计图绘制方法

0、Matplotlib常见统计图

Matplotlib中常见的统计图有折线图、散点图、直方图、条形图等。其中,折线图一般用来描述数据数据的变化情况,通过折线图可以清晰的看到数据的变化走势,例如股票市场中的分时线走势。

散点图用于寻找变量(x ,y)的关系,展示离群点,分析潜在联系等,例如猪周期,24节气与变盘点对应关系,黄金价格与美元汇率关系等。

直方图用来显示定量数据的分布,例如图像分析中的灰度直方图、颜色直方图、梯度直方图等。

而条形图则是对分类对象进行分组,而不是根据具体数值进行分组,分组顺序可以调整。例如不同国家GDP情况,深度学习分类任务中不同类别样本统计等。

1、折线图绘制方法

1)绘制单条折线
from matplotlib import pyplot as plt
import random

import matplotlib
matplotlib.use('TkAgg')

matplotlib.rcParams['font.sans-serif']=['SimHei']


x = range(0,120)
y = [random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y)

#调整x轴的刻度
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45) #rotaion旋转的度数

#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度 单位(℃)")
plt.title("10点到12点每分钟的气温变化情况")

plt.show()

气温-时间变化图
其中需要注意xticks中ticks要和labels一一对应(def xticks(ticks=None, labels=None, **kwargs))

2)绘制多条折线
from matplotlib import pyplot as plt
import matplotlib
matplotlib.use('TkAgg')

matplotlib.rcParams['font.sans-serif']=['SimHei']

y_1 = [1,0,1,1,2,4,3,2,3,4,4,5]
y_2 = [1,0,3,1,2,2,3,3,2,1 ,2,2]

x = range(1,13)

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y_1,label="军工etf",color="#F08080")
plt.plot(x,y_2,label="酒etf",color="#DB7093",linestyle="--")

#设置x轴刻度
_xtick_labels = ["{}月".format(i) for i in x]
plt.xticks(x,_xtick_labels)
# plt.yticks(range(0,9))

#绘制网格
plt.grid(alpha=0.4,linestyle=':')

#添加图例
plt.legend(loc="upper left")

#展示
plt.show()

在这里插入图片描述

2、散点图绘制方法

from matplotlib import pyplot as plt
from matplotlib import font_manager
import matplotlib
matplotlib.use('TkAgg')

matplotlib.rcParams['font.sans-serif']=['SimHei']
y_3 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

x_3 = range(1,32)
x_10 = range(51,82)

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)

#使用scatter方法绘制散点图,和之前绘制折线图的唯一区别
plt.scatter(x_3,y_3,label="3月份")
plt.scatter(x_10,y_10,label="10月份")

#调整x轴的刻度
_x = list(x_3)+list(x_10)
_xtick_labels = ["3月{}日".format(i) for i in x_3]
_xtick_labels += ["10月{}日".format(i-50) for i in x_10]
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45)

#添加图例
plt.legend(loc="upper left")

#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("标题")
#展示
plt.show()

在这里插入图片描述

3、直方图绘制方法

import cv2 as cv
from matplotlib import pyplot as plt
import matplotlib

matplotlib.rcParams['font.sans-serif']=['SimHei']

# 读取图片
img = cv.imread('wiki.jpg',0)

# 开1行两列窗口,选1号窗口操作
plt.subplot(121)
# 绘制灰度图
plt.imshow(img,cmap='gray')
plt.title("图片")
# 选择2号窗口
plt.subplot(122)
# 绘制图像直方图
plt.hist(img.flatten(),256,[0,256], color = 'b',label="histogram")
plt.xlim([0,256])
plt.grid(alpha=0.4)
plt.legend(loc = 'upper right')
plt.show()

在这里插入图片描述

4、条形图绘制方法

以读取德国交通标志牌分类数据集为例,统计每类标志牌数量

import csv
from collections import Counter
from matplotlib import pyplot as plt
import matplotlib
matplotlib.use('TkAgg')


# 读取德国交通标志数据集标注文件
with open('train_data.csv','r') as f:
    reader = csv.reader(f)
    column = [row[1] for row in reader]
    print(column)

classes = [int(i) for i in column]

print(max(classes))
print(min(classes))

# 计算每个类别的数量
numClasses = Counter(classes)

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)

# 条形图宽度小于刻度时 每个类别的条形图分开
plt.bar(range(len(numClasses)), list(numClasses.values()), align='center',width=0.8)
plt.xticks(range(len(numClasses)), list(numClasses.keys()))



plt.grid(alpha=0.4)
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值