大数据可视化技术
实验五:时间数据可视化
一、实验名称
时间数据可视化
二、实验目的
通过该实验的实践,要求学生可以理解时间数据的含义,掌握Matplotlib和pyecharts的使用过程,能够熟练绘制常见的适合展示时间数据的图表。
三、实验原理
时间数据是在不同时间上收集到的数据,用于所描述现象随时间变化的情况。这类数据反映了某一事物、现象等随时间的变化状态或程度。
适合表达时间数据的图表有折线图、阶梯图、散点图、柱形图等。
四、实验步骤
1、阶梯图
from pyecharts import Line
line = Line("美国邮票阶梯图")
datax = ['1995','1996','1997','1998','1999','2000','2001','2002','2003','2004','2005','2006','2007','2008','2009']
datay = [0.32,0.32,0.32,0.32,0.33,0.33,0.34,0.37,0.37,0.37,0.37,0.39,0.41,0.42,0.44]
line.add("Price",datax, datay, is_step = True,is_label_show = True,yaxis_min = 0.3,yaxis_max = 0.45)
line.render(path='./1.阶梯图.html')
输出结果:
2、折线图
import csv
import matplotlib.pyplot as plt
filename = "/home/ubuntu/world-population.csv"
datax = []
datay = []
with open(filename) as f:
reader = csv.reader(f)
for datarow in reader:
if reader.line_num != 1:
print(reader.line_num,datarow)
datax.append(datarow[0])
datay.append(datarow[1])
plt.plot(datax,datay)
plt.show()
输出结果:
3、拟合曲线
import numpy as np
import matplotlib.pyplot as plt
import csv
import sys
filename = "/home/ubuntu/unemployment-rate-1948-2010.csv"
xa = []
ya = []
try:
with open(filename) as f:
reader = csv.reader(f)
for datarow in reader:
if reader.line_num != 1:
ya.append(float(datarow[3]))
xa.append(int(datarow[1]))
except csv.Error:
print("Error reading csv file")
sys.exit(-1)
plt.figure()
plt.scatter(xa[:], ya[:], s=10,c='g',marker='o',alpha=0.5)
poly = np.polyfit(xa, ya, deg = 3)
plt.plot(xa, np.polyval(poly, xa))
plt.show()
输出结果:
4、散点图
import csv
import matplotlib.pyplot as plt
filename = "/home/ubuntu/flowingdata_subscribers.csv"
datay = []
with open(filename) as f:
reader = csv.reader(f)
for datarow in reader:
if reader.line_num != 1:
datay.append(datarow[1])
xa = list(range(1, len(datay) + 1))
plt.scatter(xa, datay, s=50, c='r', marker='o', alpha=0.5)
plt.show()
输出结果:
5、柱形图
from pyecharts import Bar, Scatter3D
from pyecharts import Page
import csv
page = Page()
bar = Bar("柱状图示例")
filename = "/home/ubuntu/hot-dog-contest-winners.csv"
datax = []
datay = []
with open(filename) as f:
reader = csv.reader(f)
for datarow in reader:
if reader.line_num != 1:
datay.append(datarow[2])
datax.append(datarow[0])
bar.add("A", datax, datay, is_stack=True)
page.add(bar)
page.render(path='./5.柱状图.html')
输出结果:
6、堆叠柱形图
from pyecharts import Bar, Scatter3D
from pyecharts import Page
import csv
page = Page()
bar = Bar("柱状图数据堆叠示例")
filename = "/home/ubuntu/hot-dog-places.csv"
datax = []
datay = []
with open(filename) as f:
reader = csv.reader(f)
for datarow in reader:
datax.append(datarow)
x= datax[0]
y1=datax[1]
y2=datax[2]
y3=datax[3]
bar.add("A", x, y1, is_stack=True)
bar.add("B", x, y2, is_stack=True)
bar.add("c", x, y2, is_stack=True)
page.add(bar)
page.render(path='./6.柱状堆叠图.html')
输出结果:
五、实验总结
在实验中,通过实践练习,提高学生使用matplotlib和pyecharts进行时间数据可视化的熟练程度,总结适合展示时间数据的图表,能够解释数据随时间变化的趋势。