from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.add_yaxis("商家B", [15, 6, 45, 20, 65, 90])
bar.render("./modules/bar_chart.html")
当我们想要x和y轴进行反转时,可以用以下的方式,反转之后数据还是在中间,我们需要将数据的位置放到右端
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeType
bar1 = Bar()
bar1.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar1.add_yaxis("商家A", [5, 20, 36, 10, 75, 90], label_opts=LabelOpts(position="right"))
bar1.add_yaxis("商家B", [15, 6, 45, 20, 65, 90], label_opts=LabelOpts(position="right")) # 反转之后,需要将数字放在右侧
bar1.reversal_axis()
bar2 = Bar()
bar2.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar2.add_yaxis("商家A", [10, 22, 45, 56, 8, 120], label_opts=LabelOpts(position="right"))
bar2.add_yaxis("商家B", [20, 10, 34, 45, 98, 78], label_opts=LabelOpts(position="right")) # 反转之后,需要将数字放在右侧
bar2.reversal_axis()
# 绘制时间线对象
timeline = Timeline(
{"theme": ThemeType.LIGHT} # 设置主题
)
# 添加两个柱状图到时间线中
timeline.add(bar1, "2019")
timeline.add(bar2, "2020")
# 自动播放设置
timeline.add_schema(
is_auto_play=True, # 是否自动播放
is_loop_play=True, # 是否循环自动播放
play_interval=1000, # 自动播放的时间间隔,单位为毫秒
is_timeline_show=True # 是否在自动播放的时候显示时间线
)
# 渲染图表并保存为HTML文件
timeline.render("./modules/bar_chart_timeLine.html")
# -- coding: utf-8 --
# 每年GDP前八的国家:
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
# 1. 打开文件
fr = open("./text/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = fr.readlines()
fr.close()
# 2. 数据处理
# 删除第一条数据
data1 = data_lines.pop(0)
# print(data1)
# 将数据转换为字典存储,格式为:
# {年份: [[国家1, 该国GDP数据], [国家2, 该国GDP数据], ...], 年份: [[国家2, 该国GDP数据], ...], ...}
# 先定义一个字典对象
data_dict = {}
for line in data_lines:
year = int(line.split(",")[0])
country = line.split(",")[1]
gdp = float(line.split(",")[2]) # 有些数据采用了科学计数法,需要转换为浮点数
# 判断字典中是否已经存在该年份的数据, 可以使用if 判断,也可以使用异常处理
try:
data_dict[year].append([country, gdp]) # 如果有这个key的话,直接append进去
except KeyError:
data_dict[year] = [] # 没有则创建
data_dict[year].append([country, gdp])
# print(data_dict)
# 创建时间线对象
timeline = Timeline(
{"theme": ThemeType.CHALK}
)
# 3.绘图
# 排序年份
sorted_year_list = sorted(data_dict.keys()) # 可以保证时间线中的年份顺序是正确的
# print(sorted_year_list)
for year in sorted_year_list:
data_dict[year].sort(key=lambda x: x[1], reverse=True)
# 取出本年份前八名的国家
gdp_top8 = data_dict[year][:8]
x_data = []
y_data = []
for country_gdp in gdp_top8:
x_data.append(country_gdp[0])
y_data.append(country_gdp[1] / 100000000)
# 绘图
bar = Bar()
# 为了GDP高的在上面,所以我们需要将x、y轴进行反转
x_data.reverse()
y_data.reverse()
bar.add_xaxis(x_data)
bar.add_yaxis("GDP(亿元)", y_data, label_opts=LabelOpts(position="right"))
# 反转
bar.reversal_axis()
# 设置每一年的图表标题
bar.set_global_opts(
title_opts=TitleOpts(title=f"{year}年GDP前八名图表", pos_left="center", pos_top="6%")
)
# 构建时间线
timeline.add(bar, str(year))
"""
for 循环每一年的数据,基于每一年的数据,创建每一年的bar对象
然后将bar对象添加到时间线中
注意:需要对每一年的数据进行排序,取出GDP前8的国家
注意:需要对x轴的数据进行反转
"""
timeline.add_schema(
is_auto_play=True, # 是否自动播放
is_loop_play=True, # 是否循环自动播放
play_interval=1000, # 自动播放的时间间隔,单位为毫秒
is_timeline_show=True # 是否在自动播放的时候显示时间线
)
timeline.render("./modules/GDP8.html")
详细解释: