pyecharts
是一个基于 Echarts 的 Python 图表库,它提供了丰富的图表类型和交互功能。可以使用使用 pyecharts
创建柱状图首先,安装 pyecharts
库。如果没有安装,可以使用以下命令安装:
pip install pyecharts
然后,创建一个简单的柱状图:
from pyecharts import options as opts
from pyecharts.charts import Bar
# 示例数据
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [25, 40, 30, 50]
# 创建柱状图实例
bar_chart = Bar()
# 添加数据
bar_chart.add_xaxis(categories)
bar_chart.add_yaxis("Values", values)
# 设置标题和标签
bar_chart.set_global_opts(title_opts=opts.TitleOpts(title="Basic Bar Chart"),
xaxis_opts=opts.AxisOpts(name="Categories"),
yaxis_opts=opts.AxisOpts(name="Values"))
# 渲染图表
bar_chart.render("basic_bar_chart.html")
pyecharts
的必要模块。然后,创建一个 Bar
实例,代表柱状图。接着,使用 add_xaxis
和 add_yaxis
方法分别添加 x 轴和 y 轴的数据。还使用 set_global_opts
方法设置了标题和轴标签的选项。最后,使用 render
方法将图表渲染为 HTML 文件。pyecharts
的 Bar 类中的 reversal_axis()
方法翻转 x 轴和 y 轴from pyecharts import options as opts
from pyecharts.charts import Bar
# 示例数据
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [25, 40, 30, 50]
# 创建柱状图实例
bar_chart = Bar()
# 添加数据
bar_chart.add_xaxis(categories)
bar_chart.add_yaxis("Values", values)
# 设置标题和标签
bar_chart.set_global_opts(title_opts=opts.TitleOpts(title="Basic Bar Chart"),
xaxis_opts=opts.AxisOpts(name="Categories"),
yaxis_opts=opts.AxisOpts(name="Values"))
# 反转x和y轴
bar_chart.reversal_axis()
# 渲染图表
bar_chart.render("basic_bar_chart.html")
from pyecharts import options as opts
from pyecharts.charts import Bar
# 示例数据
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [25, 40, 30, 50]
# 创建柱状图实例
bar_chart = Bar()
# 添加数据
bar_chart.add_xaxis(categories)
bar_chart.add_yaxis("Values", values, label_opts=opts.LabelOpts(position="right"))
# 设置标题和标签
bar_chart.set_global_opts(title_opts=opts.TitleOpts(title="Basic Bar Chart"),
xaxis_opts=opts.AxisOpts(name="Categories"),
yaxis_opts=opts.AxisOpts(name="Values"))
# 反转x和y轴
bar_chart.reversal_axis()
# 渲染图表
bar_chart.render("basic_bar_chart.html")
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeType
bar1 = Bar()
bar1.add_xaxis(["中国", "美国", "英国"])
bar1.add_yaxis("GDP", [30, 30, 20], label_opts=LabelOpts(position="right"))
bar1.reversal_axis()
bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [50, 50, 50], label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [70, 60, 60], label_opts=LabelOpts(position="right"))
bar3.reversal_axis()
# 构建时间线对象
# timeline = Timeline()
timeline = Timeline({"theme": ThemeType.LIGHT}) #设置时间线对象
# 在时间线内添加柱状图对象
timeline.add(bar1, "点1")
timeline.add(bar2, "点2")
timeline.add(bar3, "点3")
# 自动播放设置
timeline.add_schema(
play_interval=1000, # 自动播放的时间间隔,单位毫秒
is_timeline_show=True, # 是否在自动播放的时候,显示时间线
is_auto_play=True, # 是否自动播放
is_loop_play=True # 是否循环播放
)
# 绘图是用时间线对象绘图,而不是bar对象了
timeline.render("基础时间线柱状图.html")
year,GDP,rate
1960,美国,5.433E+11
1960,英国,73233967692
1960,法国,62225478000
1960,中国,59716467625
1960,日本,44307342950
1960,加拿大,40461721692
列表.sort(key=选择排序依据的函数, reverse=True|False)
my_list = [["a", 33], ["b", 55], ["c", 11]]
# 排序,基于带名函数
# def choose_sort_key(element):
# return element[1]
#
# my_list.sort(key=choose_sort_key, reverse=False)
# 使用 sort() 方法,按子列表中的第二个元素排序
my_list.sort(key=lambda x: x[1])
print("升序排序:", my_list)
# 升序排序: [['c', 11], ['a', 33], ['b', 55]]
my_list.sort(key=lambda x: x[1], reverse=True)
print("降序排序:", my_list)
# 降序排序: [['b', 55], ['a', 33], ['c', 11]]
key=lambda x: x[1]
Lambda 表达式是一个用于比较排序的函数,它告诉 sort() 方法按照子列表中的第二个元素进行排序from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
# 读取数据
f = open("c:/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()
# 关闭文件
f.close()
# 删除第一条数据
data_lines.pop(0) # year,GDP,rate
# 将数据转换为字典存储,格式为:
# { 年份: [ [国家, gdp], [国家,gdp], ...... ], 年份: [ [国家, gdp], [国家,gdp], ...... ], ...... }
# { 1960: [ [美国, 123], [中国,321], ...... ], 1961: [ [美国, 123], [中国,321], ...... ], ...... }
# 先定义一个字典对象
data_dict = {}
for line in data_lines:
year = int(line.split(",")[0]) # 年份
country = line.split(",")[1] # 国家
gdp = float(line.split(",")[2]) # gdp数据
# 判断字典里面有没有指定的key
try:
data_dict[year].append([country, gdp])
except KeyError:
data_dict[year] = []
data_dict[year].append([country, gdp])
# 创建时间线对象
timeline = Timeline({"theme": ThemeType.LIGHT})
# 排序年份
sorted_year_list = sorted(data_dict.keys())
for year in sorted_year_list:
data_dict[year].sort(key=lambda element: element[1], reverse=True)
# 取出本年份前8名的国家
year_data = data_dict[year][0:8]
x_data = [] #countrys
y_data = [] #gdps
for country_gdp in year_data:
x_data.append(country_gdp[0]) # x轴添加国家
y_data.append(country_gdp[1] / 100000000) # y轴添加gdp数据
# 构建柱状图
bar = Bar() # 创建柱状图
x_data.reverse() # 反转国家,使GDP最高的排在最上面
y_data.reverse() # 同步反转GDP数据
bar.add_xaxis(x_data)
bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))
# 反转x轴和y轴
bar.reversal_axis()
# 设置每一年的图表的标题
bar.set_global_opts(
title_opts=TitleOpts(title=f"{year}年全球前8GDP数据")
)
timeline.add(bar, str(year)) #时间线添加一个点,和对应的bar图
# for循环每一年的数据,基于每一年的数据,创建每一年的bar对象
# 在for中,将每一年的bar对象添加到时间线中
# 设置自动播放
timeline.add_schema(
play_interval=1000,
is_timeline_show=True,
is_auto_play=True,
is_loop_play=False
)
# 绘图
timeline.render("1960-2019全球GDP前8国家.html")