pyecharts常用图形
pyecharts常用图形
官网:https://pyecharts.org/#/zh-cn/
快速开始
pip安装
pip install pyecharts
源码安装
git clone https://github.com/pyecharts/pyecharts.git
cd pyecharts
pip install -r requirements.txt
python setup.py install
# 或者执行 python install.py
查看 pyecharts 版本
import pyecharts
print('pyecharts版本:', pyecharts.__version__)
pyecharts版本: 2.0.8
快速上手
首先开始来绘制你的第一个图表
jupyter 环境 使用一下代码
from pyecharts.globals import CurrentConfig, NotebookType
# 对于 Jupyter Notebook
# CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_NOTEBOOK
# 对于 Jupyter Lab
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts.charts import Bar
bar = Bar()
# 模拟 x 轴数据
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
# 模拟 x 轴数据
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
# 也可以传入路径参数,如 bar.render("mycharts.html")
# bar.render()
# 需要在在第一次渲染时加载 javascript 文件
bar.load_javascript()
# 渲染图形
bar.render_notebook()
# from IPython.display import HTML
# bar.render("temp.html")
# HTML(filename="temp.html")
pyecharts 所有方法均支持链式调用。
from pyecharts.charts import Bar
bar = (
Bar()
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
# 渲染图形
bar.render_notebook()
使用 options 配置项,在 pyecharts 中,一切皆 Options。
from pyecharts.charts import Bar
from pyecharts import options as opts
# V1 版本开始支持链式调用
# 你所看到的格式其实是 `black` 格式化以后的效果
# 可以执行 `pip install black` 下载使用
bar = (
Bar()
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
# 或者直接使用字典参数
# .set_global_opts(title_opts={"text": "主标题", "subtext": "副标题"})
)
bar.render_notebook()
不习惯链式调用的开发者依旧可以单独调用方法
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
bar.render_notebook()
使用主题
pyecharts 提供了 10+ 种内置主题,开发者也可以定制自己喜欢的主题,进阶话题-定制主题 有相关介绍。
from pyecharts.charts import Bar
from pyecharts import options as opts
# 内置主题类型可查看 pyecharts.globals.ThemeType
from pyecharts.globals import ThemeType
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
.add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)
bar.render_notebook()
from pyecharts.charts import Bar
from pyecharts import options as opts
# 内置主题类型可查看 pyecharts.globals.ThemeType
from pyecharts.globals import ThemeType
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
.add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)
bar.render_notebook()
常用图形
pyecharts 是一个强大的 Python 可视化库,它支持绘制多种类型的图表,以下是一些常见的图表类型:
-
折线图(Line Chart)
用于展示数据随时间或其他连续变量的变化趋势。比如股票价格随时间的波动、气温随日期的变化等。
-
饼图(Pie Chart)
主要用于展示各部分数据在总体中所占的比例关系。例如不同产品的销售额占总销售额的比例。
-
散点图(Scatter Chart)
可用于展示两个变量之间的关系,通过点的分布来呈现数据的相关性。像研究身高和体重之间的关系。
-
雷达图(Radar Chart)
适合用于展示多个变量的综合表现,常用于评估多个指标的情况,如对不同学生的多门课程成绩进行综合评估。
-
箱线图(Boxplot Chart)
用于显示一组数据的分布情况,包括最小值、第一四分位数、中位数、第三四分位数和最大值,能直观地反映数据的离散程度和异常值。
-
热力图(Heatmap Chart)
通过颜色的深浅来表示数据的大小,常用于展示二维数据的分布,如不同地区不同时间段的温度分布。
-
地图(Map)
可以展示地理数据,如不同地区的人口数量、GDP 等。pyecharts 支持多种地图类型,包括世界地图、中国地图以及各省份地图等。
-
树状图(Tree Chart)
用于展示层级结构的数据,如公司的组织架构、文件系统的目录结构等。
-
旭日图(Sunburst Chart)
也是用于展示层级数据的图表,以同心圆环的形式呈现数据的层次关系,相较于树状图,它更强调各部分的占比关系。
-
词云图(WordCloud)
用于展示文本数据中词语的频率,词语的大小代表其出现的频率,常用于分析文本内容的关键词。
1. 折线图(Line Chart)
用于展示数据随时间或其他连续变量的变化趋势。比如股票价格随时间的波动、气温随日期的变化等。
from pyecharts.charts import Line
from pyecharts import options as opts
# 模拟数据
x_data = ["1月", "2月", "3月", "4月", "5月", "6月"]
y_data = [100, 120, 150, 130, 160, 180]
# 创建折线图对象
line = Line()
line.add_xaxis(x_data)
line.add_yaxis("销售额", y_data)
# 设置全局配置
line.set_global_opts(
title_opts=opts.TitleOpts(title="上半年销售额折线图"),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 渲染并保存
# line.render("line_chart.html")
line.render_notebook()
2. 饼图(Pie Chart)
主要用于展示各部分数据在总体中所占的比例关系。例如不同产品的销售额占总销售额的比例。
from pyecharts.charts import Pie
from pyecharts import options as opts
# 模拟数据
data = [("苹果", 30), ("香蕉", 25), ("橙子", 20), ("葡萄", 15), ("草莓", 10)]
# 创建饼图对象
pie = Pie()
pie.add("", data)
# 设置全局配置
pie.set_global_opts(
title_opts=opts.TitleOpts(title="水果销售占比饼图"),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 设置系列配置
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
# 渲染并保存
pie.render("pie_chart.html")
pie.render_notebook()
3. 散点图(Scatter Chart)
可用于展示两个变量之间的关系,通过点的分布来呈现数据的相关性。像研究身高和体重之间的关系。
from pyecharts.charts import Scatter
from pyecharts import options as opts
import random
# 模拟数据
x_data = [random.randint(1, 100) for _ in range(50)]
y_data = [random.randint(1, 100) for _ in range(50)]
# 创建散点图对象
scatter = Scatter()
scatter.add_xaxis(x_data)
scatter.add_yaxis("数据点", y_data)
# 设置全局配置
scatter.set_global_opts(
title_opts=opts.TitleOpts(title="随机数据散点图"),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 渲染并保存
scatter.render("scatter_chart.html")
scatter.render_notebook()
4. 雷达图(Radar Chart)
适合用于展示多个变量的综合表现,常用于评估多个指标的情况,如对不同学生的多门课程成绩进行综合评估。
from pyecharts.charts import Radar
from pyecharts import options as opts
# 模拟数据
v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[9000, 14000, 28000, 31000, 42000, 21000]]
c_schema = [
{"name": "销售", "max": 60000},
{"name": "管理", "max": 16000},
{"name": "信息技术", "max": 30000},
{"name": "客服", "max": 38000},
{"name": "研发", "max": 52000},
{"name": "市场", "max": 25000},
]
# 创建雷达图对象
radar = Radar()
radar.add_schema(schema=c_schema)
# 添加数据并设置颜色和标签
radar.add("预算分配", v1, color="#FF6060", label_opts=opts.LabelOpts(is_show=True))
radar.add("实际开销", v2, color="#6060FF", label_opts=opts.LabelOpts(is_show=True))
# 设置全局配置
radar.set_global_opts(
title_opts=opts.TitleOpts(title="预算与实际开销雷达图"),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 渲染并保存
radar.render("radar_chart.html")
radar.render_notebook()
5. 箱线图(Boxplot Chart)
用于显示一组数据的分布情况,包括最小值、第一四分位数、中位数、第三四分位数和最大值,能直观地反映数据的离散程度和异常值。
from pyecharts.charts import Boxplot
from pyecharts import options as opts
# 模拟数据
v1 = [
[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880, 1000, 980],
[960, 940, 960, 940, 880, 800, 850, 880, 900, 840, 830, 790],
]
# 创建箱线图对象
boxplot = Boxplot()
boxplot.add_xaxis(["expr1", "expr2"])
boxplot.add_yaxis("", boxplot.prepare_data(v1))
# 设置全局配置
boxplot.set_global_opts(
title_opts=opts.TitleOpts(title="数据分布箱线图"),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 渲染并保存
boxplot.render("boxplot_chart.html")
boxplot.render_notebook()
6. 热力图(Heatmap Chart)
通过颜色的深浅来表示数据的大小,常用于展示二维数据的分布,如不同地区不同时间段的温度分布。
from pyecharts.charts import HeatMap
from pyecharts import options as opts
# 模拟数据
data = [
[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)
]
# 创建热力图对象
heatmap = HeatMap()
heatmap.add_xaxis([str(i) for i in range(24)])
heatmap.add_yaxis("星期", ["周一", "周二", "周三", "周四", "周五", "周六", "周日"], data)
# 设置全局配置
heatmap.set_global_opts(
title_opts=opts.TitleOpts(title="一周 24 小时热度分布热力图"),
visualmap_opts=opts.VisualMapOpts(max_=50),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 渲染并保存
heatmap.render("heatmap_chart.html")
heatmap.render_notebook()
![pyecharts 热力图
7. 地图(Map)
可以展示地理数据,如不同地区的人口数量、GDP 等。pyecharts 支持多种地图类型,包括世界地图、中国地图以及各省份地图等。
from pyecharts.charts import Map
from pyecharts import options as opts
# 模拟数据
data = [("广东", 95), ("北京", 80), ("上海", 75), ("江苏", 70), ("浙江", 65)]
# 创建地图对象
map_chart = Map()
map_chart.add("省份数据", data, "china")
# 设置全局配置
map_chart.set_global_opts(
title_opts=opts.TitleOpts(title="中国部分省份数据分布地图"),
visualmap_opts=opts.VisualMapOpts(max_=100),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 渲染并保存
map_chart.render("map_chart.html")
map_chart.render_notebook()
8. 树状图(Tree Chart)
用于展示层级结构的数据,如公司的组织架构、文件系统的目录结构等。
from pyecharts.charts import Tree
from pyecharts import options as opts
# 模拟数据
data = [
{
"children": [
{"name": "二级节点1"},
{"name": "二级节点2"}
],
"name": "根节点"
}
]
# 创建树状图对象
tree = Tree()
tree.add("", data)
# 设置全局配置
tree.set_global_opts(
title_opts=opts.TitleOpts(title="简单树状图"),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 渲染并保存
tree.render("tree_chart.html")
tree.render_notebook()
9. 旭日图(Sunburst Chart)
也是用于展示层级数据的图表,以同心圆环的形式呈现数据的层次关系,相较于树状图,它更强调各部分的占比关系。
from pyecharts.charts import Sunburst
from pyecharts import options as opts
# 模拟数据
data = [
{
"name": "Grandpa",
"children": [
{
"name": "Uncle Leo",
"value": 15,
"children": [
{"name": "Cousin Jack", "value": 2},
{
"name": "Cousin Mary",
"value": 5,
"children": [{"name": "Jackson", "value": 2}]
},
{"name": "Cousin Ben", "value": 4}
]
},
{
"name": "Father",
"value": 10,
"children": [
{"name": "Me", "value": 5},
{"name": "Brother Peter", "value": 1}
]
}
]
}
]
# 创建旭日图对象
sunburst = Sunburst()
sunburst.add(series_name="", data_pair=data)
# 设置全局配置
sunburst.set_global_opts(
title_opts=opts.TitleOpts(title="家族关系旭日图"),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 设置系列配置
sunburst.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}"))
# 渲染并保存
sunburst.render("sunburst_chart.html")
sunburst.render_notebook()
10. 词云图(WordCloud)
用于展示文本数据中词语的频率,词语的大小代表其出现的频率,常用于分析文本内容的关键词。
pip 方式安装 词云图(WordCloud)
pip install wordcloud
from pyecharts.charts import WordCloud
from pyecharts import options as opts
# 模拟数据
words = [
("Python", 100),
("Java", 80),
("C++", 60),
("JavaScript", 50),
("Go", 40),
("Ruby", 30)
]
# 创建词云图对象
wordcloud = WordCloud()
wordcloud.add("编程语言词云图", words)
# 设置全局配置
wordcloud.set_global_opts(
title_opts=opts.TitleOpts(title="编程语言词云图"),
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
# 渲染并保存
wordcloud.render("wordcloud_chart.html")
wordcloud.render_notebook()