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)
_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)
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="--")
_xtick_labels = ["{}月".format(i) for i in x]
plt.xticks(x,_xtick_labels)
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)
plt.scatter(x_3,y_3,label="3月份")
plt.scatter(x_10,y_10,label="10月份")
_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)
plt.subplot(121)
plt.imshow(img,cmap='gray')
plt.title("图片")
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()
|