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 Barbar = 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 Barbar = (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 ThemeTypebar = (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 ThemeTypebar = (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()