数据可视化-实验二-统计图可视化(pyecharts)
一、实验要求:
对daily-minimum-temperatures-in-me.csv中的数据进行处理
使用编程类可视化工具实现如下所示效果:
二、具体实现
1.进入pyecharts官网修改demo即可:
本实验我们要做的就是读取文件中的数据并照着demo里所给的数据格式进行修改即可!
2.实验代码:
from pyecharts import options as opts
from pyecharts.charts import Bar3D
import pandas as pd
import datetime
# 设置3个列表存放3个轴的信息
years = [] # x轴
month_day = [] # y轴
temp = [] # z轴
def read_csv(filename):
df = pd.read_csv(filename)
# 遍历
for _, data in df.iterrows():
# 利用datetime库格式化并处理日期
mydate = datetime.datetime.strptime(data[0], '%Y-%m-%d')
# print(type(data[0]))
years.append(mydate.year)
# 数据必须格式化处理,否则排序时会出错!!!
# 用0填充 向右调整 占2个字符
month_day.append(str("{:0>2d}".format(mydate.month)) + "-" + str("{:0>2d}".format(mydate.day)))
temp.append([mydate, data[1]])
# print(years)
# print(month_day)
# print(temp)
def build_bar3D():
global years
global month_day
# 列表去重->排序
years = list(set(years))
years.sort()
month_day = list(set(month_day))
month_day.sort()
# 建立yaer和month_day和index的映射关系
# 这一步是整个实验最重要的一步!
years_2_idx = {
elem: idx for idx, elem in enumerate(years)}
month_day_2_idx = {
elem: idx for idx, elem in enumerate(month_day)}
# 建立数据集
data = []
for elem in temp:
x = years_2_idx[elem[0].year]
y = month_day_2_idx[str("{:0>2d}".format(elem[0].month)) + "-" + str("{:0>2d}".format(elem[0].day))]
z = elem[1]
data.append([x, y, z])
(
# 处理数据
Bar3D()
.add(
series_name="",
data=data,
xaxis3d_opts=opts.Axis3DOpts(years, type_="category"),
yaxis3d_opts=opts.Axis3DOpts(month_day, type_="category"),
zaxis3d_opts=opts.Axis3DOpts(type_="value"),
# 三维笛卡尔坐标系配置项
grid3d_opts=opts.Grid3DOpts(
width=100,
height=100,
depth=100,
# 是否开启视角绕物体的自动旋转查看。
is_rotate=True,
# 物体自转的速度。单位为角度 / 秒,默认为10 ,也就是 36 秒转一圈。
rotate_speed=10,
# 旋转操作的灵敏度,值越大越灵敏。支持使用数组分别设置横向和纵向的旋转灵敏度。
rotate_sensitivity=1,
),
# 三维柱状图中三维图形的着色效果
# color:只显示颜色,不受光照等其它因素的影响
shading="color"
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="Daily minimum temperatures in Melbourne, Australia, 1981-1990"),
visualmap_opts=opts.VisualMapOpts(min_=0, max_=20),
)
.render("work_2.html")
)
if __name__ == '__main__':
file = "daily-minimum-temperatures-in-me.csv"
# 1.读文件中的数据
read_csv(file)
# 2.数据可视化
build_bar3D()
3.实验需要注意的两个细节:
(1)对日期必须进行格式化处理:
用0填充,向右调整,占两个字符!!!否则最后的日期顺序会错乱!
(2)建立year和month_day在x轴和y轴上的映射关系(非常重要):
三、实验结果