本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html
pyecharts是一个基于Echarts.js库的Python可视化工具,可以用于生成各种类型的图表,包括折线图、柱状图、散点图、地图等等。pyecharts提供了一套简单易用的API,可以方便地进行数据处理和图表生成,同时还支持多种输出格式,包括HTML、Jupyter Notebook、图片等。并且可以生成独立的网页,可以与flask、Django框架搭配使用编写前后端项目;后续也会带着大家完成可视化大屏项目。
官方中文文档:https://pyecharts.org/#/zh-cn/global_options
官方Github链接:https://github.com/pyecharts/pyecharts/
V0.5x版本:不再进行维护。仅支持python2.7、3.4+
V1.0x版本:仅支持python3.6+;V1 版本开始支持链式调用
pyecharts常用图像有:
安装模块:
pip install pyecharts
如果需要绘制地理图相关内容,需要安装地图文件:
中国市级地图: echarts-china-cities-pypkg
中国省级地图: echarts-china-provinces-pypkg
全球国家地图: echarts-countries-pypkg
pip install pyecharts
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
使用 Pyecharts 创建图形的基本步骤是
准备数据
设计图形的样式、背景颜色
Pyecharts 绘图
设计图表的标题或者图例等属性
导出至 html
pyecharts自带的数据集存储于 faker.py 文件中,这些以列表的方式存储,主要包含类别数据、时间数据、颜色数据、地理数据、世界人口数据。
clothes = ["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]
drinks = ["可乐", "雪碧", "橙汁", "绿茶", "奶茶", "百威", "青岛"]
phones = ["小米", "三星", "华为", "苹果", "魅族", "VIVO", "OPPO"]
fruits = ["草莓", "芒果", "葡萄", "雪梨", "西瓜", "柠檬", "车厘子"]
animal = ["河马", "蟒蛇", "老虎", "大象", "兔子", "熊猫", "狮子"]
cars = ["宝马", "法拉利", "奔驰", "奥迪", "大众", "丰田", "特斯拉"]
dogs = ["哈士奇", "萨摩耶", "泰迪", "金毛", "牧羊犬", "吉娃娃", "柯基"]
week = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
week_en = "Saturday Friday Thursday Wednesday Tuesday Monday Sunday".split()
clock = (
"12a 1a 2a 3a 4a 5a 6a 7a 8a 9a 10a 11a 12p "
"1p 2p 3p 4p 5p 6p 7p 8p 9p 10p 11p".split()
)
months = ["{}月".format(i) for i in range(1, 13)]
days_attrs = ["{}天".format(i) for i in range(30)]
days_values = [random.randint(1, 30) for _ in range(30)]
visual_color = [
"#313695",
"#4575b4",
"#74add1",
"#abd9e9",
"#e0f3f8",
"#ffffbf",
"#fee090",
"#fdae61",
"#f46d43",
"#d73027",
"#a50026",
]
provinces = ["广东", "北京", "上海", "江西", "湖南", "浙江", "江苏"]
guangdong_city = ["汕头市", "汕尾市", "揭阳市", "阳江市", "肇庆市", "广州市", "惠州市"]
country = [
"China",
"Canada",
"Brazil",
"Russia",
"United States",
"Africa",
"Germany",
]
2019年世界人口数据集,结构为二层嵌套列表,结构如下,第一列为国家或地区,第二列为人口数量:
POPULATION = [
["Country (or dependency)", "Population\n(2019)"],
["China", 1420062022],
["India", 1368737513],
["United States", 329093110],
["Indonesia", 269536482],
["Brazil", 212392717],
["Pakistan", 204596442],
["Nigeria", 200962417],
["Bangladesh", 168065920],
["Russia", 143895551],
["Mexico", 132328035],
["Japan", 126854745],
["Ethiopia", 110135635],
...
]
choose
:随机选择类别数据集
def choose(self) -> list:
return random.choice(
[
self.clothes,
self.drinks,
self.phones,
self.fruits,
self.animal,
self.dogs,
self.week,
]
)
values
:随机生成7个数字(20-150)构成的列表
@staticmethod
def values(start: int = 20, end: int = 150) -> list:
return [random.randint(start, end) for _ in range(7)]
rand_color
:随机从列表中生成1个颜色值
@staticmethod
def rand_color() -> str:
return random.choice(
[
"#c23531",
"#2f4554",
"#61a0a8",
"#d48265",
"#749f83",
"#ca8622",
"#bda29a",
"#6e7074",
"#546570",
"#c4ccd3",
"#f05b72",
"#444693",
"#726930",
"#b2d235",
"#6d8346",
"#ac6767",
"#1d953f",
"#6950a1",
]
)
img_path
:为路径添加前缀,默认为images
@staticmethod
def img_path(path: str, prefix: str = "images") -> str:
return os.path.join(prefix, path)
这段代码主要是演示了 pyecharts 中的 Faker 和 POPULATION 模块的用法。Faker 模块用于生成一些假数据,例如随机字符串、随机数字、随机颜色等;POPULATION 模块用于提供一些城市的人口数据。在这段代码中,我们分别打印了 Faker 模块中的 week 属性、choose 方法、values 方法和 rand_color 方法,以及 POPULATION 模块。
from pyecharts.faker import POPULATION, Faker # 导入 pyecharts 中的 Faker 和 POPULATION 模块
print(Faker.week) # 打印 Faker 模块中的 week 属性,返回一周的日期列表
print(
Faker.choose(), # 打印 Faker 模块中的 choose 方法,返回一个随机的字符串
Faker.values(), # 打印 Faker 模块中的 values 方法,返回一个随机的数字列表
Faker.rand_color() # 打印 Faker 模块中的 rand_color 方法,返回一个随机的 RGB 颜色值
)
print(POPULATION) # 打印 POPULATION 模块,返回一个包含各个城市人口数量的列表
在这段代码中,我们首先导入了 pyecharts 中的一些模块,包括 options、charts 和 faker 模块。然后,我们使用 faker 模块中的 choose 和 values 方法生成了 x 轴和 y 轴的数据。接下来,我们创建了一个柱状图对象,并使用 add_xaxis 和 add_yaxis 方法设置 x 轴和 y 轴的数据。
from pyecharts.charts import Bar
from pyecharts.faker import Faker
# 通过列表名指定x轴标签
x_data = Faker.dogs
# 也可以随机选择x轴标签
# x_data = Faker.choose()
# 随机生成y轴数据
y_data = Faker.values()
# 添加x轴数据
bar.add_xaxis(x_data)
# 添加y轴数据及其名称
bar.add_yaxis("数量", y_data)
# 在notebook中渲染图表
bar.render_notebook()
通过设置bar.render(path='文件名.html')
将图表输出到html文件:
# 导入Bar类
from pyecharts.charts import Bar
# 创建一个Bar实例
bar = Bar()
# 添加x轴数据
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
# 添加y轴数据及其名称
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
# 生成 HTML 文件
bar.render(path='柱状图.html')
会在指定路径下生成html文件
:
有些程序员喜欢链式调用,或者链式调用在某些情况下可以让代码更加简洁。pyecharts中所有的方法都支持链式调用。比如以上条形图的代码可以改成:
from pyecharts.charts import Bar
from pyecharts.faker import Faker
# 通过列表名指定x轴标签
x_data = Faker.dogs
# 也可以随机选择x轴标签
# x_data = Faker.choose()
# 随机生成y轴数据
y_data = Faker.values()
# 创建柱状图对象
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis("数量", y_data)
)
# 在notebook中渲染图表
bar.render_notebook()
Pyecharts中的set_global_opts
()函数用于设置图表的全局选项,包括标题、图例、x轴、y轴、提示框等。该函数的参数是一个opts.GlobalOpts类型的对象,可以设置以下选项:
除了以上选项外,还可以设置其他全局选项,具体可以参考官方文档。
下面是一个示例代码,展示如何使用set_global_opts()函数设置柱状图的全局选项:
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts import options as opts
# 通过列表名指定x轴标签
x_data = Faker.dogs
# 随机生成y轴数据
y_data = Faker.values()
# 创建柱状图对象
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis("数量", y_data)
.set_global_opts(
title_opts=opts.TitleOpts(title="狗狗数量统计", subtitle="数据来源:Faker.py"),
legend_opts=opts.LegendOpts(is_show=True, pos_right="20%"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-45)),
yaxis_opts=opts.AxisOpts(name="数量", axislabel_opts=opts.LabelOpts(formatter="{value}只"))
)
)
# 在notebook中渲染图表
bar.render_notebook()
代码中,使用set_global_opts()函数设置了柱状图的标题、副标题、图例、提示框、x轴、y轴等全局选项。其中,title_opts参数设置了标题和副标题,legend_opts参数设置了图例位置和是否显示,tooltip_opts参数设置了提示框触发方式和指示器类型,xaxis_opts参数设置了x轴标签旋转角度,yaxis_opts参数设置了y轴名称和刻度标签格式。