导入模块 数据
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
散点图
path = 'E:\课程\大数据实验课程\第4章 数据可视化包Matplotlib\一、车次上车人数统计表.xlsx'
data = pd.read_excel(path) #读取数据
tb = data.loc[data['车次'] == 'D02',['日期','上车人数']].sort_values('日期')
x = np.arange(1,len(tb.iloc[:,0])+1) # 设定X轴的数据
y1 = tb.iloc[:,1] # y轴的数据
plt.rcParams['font.sans-serif'] = 'SimHei' # 中文显示
plt.scatter(x, y1) # 作图
plt.xlabel('日期') # 设置x轴标题
plt.ylabel('上车人数') # 设置y轴标题
plt.xticks([1,5,10,15,20,24],tb['日期'].values[[0,4,9,14,19,23]],rotation = 90) # 设置坐标刻度
plt.title('D02车次上车人数散点图') # 添加图形标题
线性图
# 4.2.2 线性图
tb = data.loc[data['车次'] == 'D02',['日期','上车人数']]
tb = tb.sort_values('日期')
tb1 = data.loc[data['车次'] == 'D03',['日期','上车人数']]
tb1 = tb1.sort_values('日期')
# x轴数据和y轴数据的确定
x = np.arange(1,len(tb.iloc[:,0])+1)
y1 = tb.iloc[:,1]
y2 = tb1.iloc[:,1]
# 作图
plt.figure(1)
plt.rcParams['font.sans-serif'] = 'SimHei' #中文显示
plt.plot(x, y1,'r*--') # 作图1
plt.plot(x, y2,'b*--') # 作图2
plt.xlabel('日期') # x坐标标题
plt.ylabel('上车人数') # y轴坐标标题
plt.title('上车人数走势图') # 图标题
plt.legend(['D02', 'D03']) # 图例
plt.xticks([1,5,10,15,20,24],tb['日期'].values[[0,4,9,14,19,23]],rotation = 90) # 坐标刻度显示及旋转
plt.savefig('myfigure1') #保存作图
柱状图
# 4.2.3 柱状图
plt.figure(2)
plt.bar(x,y1)
plt.xlabel('日期')
plt.ylabel('上车人数')
plt.title('D02车次上车人数柱状图')
plt.xticks([1,5,10,15,20,24],tb['日期'].values[[0,4,9,14,19,23]],rotation = 90)
plt.savefig('myfigure2')
直方图
# 4.2.4 直方图
plt.figure(3)
plt.hist(y1)
plt.xlabel('上车人数')
plt.ylabel('频数')
plt.title('D02车次上车人数直方图')
#plt.savefig('myfigure3')
饼图
# 4.2.5 饼图
plt.figure(4)
D = data.iloc[:,0]
D = list(D.unique())
list1 = []
for d in D:
dt = data.loc[data['车次'] == d,['上车人数']]
s = dt.sum()
list1.append(s['上车人数'])
#绘制饼图
plt.pie(list1,labels=D,autopct='%1.2f%%')
plt.title('各车次上车人数百分比饼图')
#plt.savefig('myfigure4')
箱线图
# 4.2.6 箱线图
plt.figure(5)
plt.boxplot([y1.values,y2.values])
plt.xticks([1,2],['D02','D03'],rotation = 0)
plt.title('D02、D03 车次上车人数箱线图')
plt.ylabel('上车人数')
plt.xlabel('车次')
#plt.savefig('myfigure5')
子图(一页多图)
# 4.2.7 子图
plt.figure('子图') # 设置子图
plt.figure(figsize=(10,8)) # 设置图形大小
tb = data.loc[data['车次'] == 'D02',['日期','上车人数']].sort_values('日期')
x = np.arange(1,len(tb.iloc[:,0])+1)
y1 = tb.iloc[:,1]
plt.rcParams['font.sans-serif'] = 'SimHei'
# 子图1
plt.subplot(3, 2, 1) # 三行两页的第1个图
plt.scatter(x, y1)
plt.xlabel('日期')
plt.ylabel('上车人数')
plt.xticks([1,5,10,15,20,24],tb['日期'].values[[0,4,9,14,19,23]],rotation = 90)
plt.title('D02车次上车人数散点图')
plt.subplot(3, 2, 2) # 三行两页的第2个图
tb = data.loc[data['车次'] == 'D02',['日期','上车人数']]
tb = tb.sort_values('日期')
tb1 = data.loc[data['车次'] == 'D03',['日期','上车人数']]
tb1 = tb1.sort_values('日期')
x = np.arange(1,len(tb.iloc[:,0])+1)
y1 = tb.iloc[:,1]
y2 = tb1.iloc[:,1]
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.plot(x, y1,'r*--')
plt.plot(x, y2,'b*--')
plt.xlabel('日期')
plt.ylabel('上车人数')
plt.title('上车人数走势图')
plt.legend(['D02', 'D03'])
plt.xticks([1,5,10,15,20,24],tb['日期'].values[[0,4,9,14,19,23]],rotation = 90)
#plt.savefig('myfigure1')
plt.subplot(3, 2, 3) # 三行两页的第3个图
plt.bar(x,y1)
plt.xlabel('日期')
plt.ylabel('上车人数')
plt.title('D02车次上车人数柱状图')
plt.xticks([1,5,10,15,20,24],tb['日期'].values[[0,4,9,14,19,23]],rotation = 90)
#plt.savefig('myfigure2')
plt.subplot(3, 2, 4) # 三行两页的第4个图
plt.hist(y1)
plt.xlabel('上车人数')
plt.ylabel('频数')
plt.title('D02车次上车人数直方图')
#plt.savefig('myfigure3')
plt.subplot(3, 2, 5) # 三行两页的第5个图
D = data.iloc[:,0]
D = list(D.unique())
list1 = []
for d in D:
dt = data.loc[data['车次'] == d,['上车人数']]
s = dt.sum()
list1.append(s['上车人数'])
#绘制饼图
plt.pie(list1,labels=D,autopct='%1.2f%%')
plt.title('各车次上车人数百分比饼图')
#plt.savefig('myfigure4')
plt.subplot(3, 2, 6) # 三行两页的第6个图
plt.boxplot([y1.values,y2.values])
plt.xticks([1,2],['D02','D03'],rotation = 0)
plt.title('D02、D03 车次上车人数箱线图')
plt.ylabel('上车人数')
plt.xlabel('车次')
#plt.savefig('myfigure5')