官方中文文档,很详细很好看,配着里面的示例
https://pyecharts.org/#/zh-cn/
官方API文档,几乎包揽了全部内容。便于查看。如果有一定的基础,建议直接在API中寻找所需内容。
一.饼图、环形图
单个饼图或环形图
from pyecharts import options as opts
from pyecharts.charts import Page, Pie
# 数据准备
X = [23.74,7.07,3.53,1.01,20.7,43.95]
labels =['亲属','武汉接触','家庭','密切接触','小区感染','未知']
c = (
Pie() # 生成饼图实例
.add( # 增加一个饼图
"", # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
[list(z) for z in zip(labels,X)], # data pair:系列数据项,格式为 [(key1, value1), (key2, value2)]
# 设置两个半径则变成环形图,不设置则为饼图
radius=["40%", "75%"], # 饼图的半径,数组的第一项是内半径,第二项是外半径. # 默认设置成百分比,相对于容器高宽中较小的一项的一半
)
# 全局选项设置
.set_global_opts(
# 网页主标题
title_opts=opts.TitleOpts(title="Pie-Radius"),
# 图例的显示格式:默认水平,距顶部top的相对位置,距左边的相对位置
legend_opts=opts.LegendOpts( pos_top="5%", pos_left="25%"), #orient="horizonal"
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%")) # 标签的显示格式
.render_notebook() # 在notebook中显示
#.render("my.html") # 默认保存为html文件
)
c
多个饼图
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.commons.utils import JsCode
fn = """
function(params) {
if(params.name == '其他')
return '\\n\\n\\n' + params.name + ' : ' + params.value + '%';
return params.name + ' : ' + params.value + '%';
}
"""
def new_label_opts():
return opts.LabelOpts(formatter=JsCode(fn), position="center")
c = (
Pie()
.add( # 一个add是一个饼图
"",
[list(z) for z in zip(["道外区", "其他"], [25, 75])], # 数据
center=["15%", "30%"], # 圆环的相对位置,距左边15%,距顶端30%
radius=[60, 80],
label_opts=new_label_opts(), # 在圆环中心显示标签
)
.add(
"",
[list(z) for z in zip(["巴彦县", "其他"], [71, 29])],
center=["35%", "30%"],
radius=[60, 80],
label_opts=new_label_opts(),
)
.add(
"",
[list(z) for z in zip(["南岗区", "其他"], [40, 60])],
center=["55%", "30%"],
radius=[60, 80],
label_opts=new_label_opts(),
)
.add(
"",
[list(z) for z in zip(["香坊区", "其他"], [11.1, 89.9])],
center=["25%", "70%"],
radius=[60, 80],
label_opts=new_label_opts(),
)
.add(
"",
[list(z) for z in zip(["尚志市", "其他"], [40, 60])],
center=["46%", "70%"],
radius=[60, 80],
label_opts=new_label_opts(),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="Pie-多饼图基本示例"),
legend_opts=opts.LegendOpts(
type_="scroll", pos_top="20%", pos_left="80%", orient="vertical"
),
)
.render_notebook()
)
c
二.条形图
分组条形图
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)) # LIGHT,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="副标题"))
.render_notebook()
)
bar
暗黑色系:
三.折线图
堆叠折线图
import pyecharts.options as opts
from pyecharts.charts import Line
x_data = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
y_data = [820, 932, 901, 934, 1290, 1330, 1320]
c = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="邮件营销", # 图例标签
stack="总量", # 数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置。
y_axis=[120, 132, 101, 134, 90, 230, 210],
label_opts=opts.LabelOpts(is_show=False), # 是否显示每个点的数值
)
.add_yaxis(
series_name="联盟广告",
# stack="总量",
y_axis=[220, 182, 191, 234, 290, 330, 310],
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="视频广告",
# stack="总量",
y_axis=[150, 232, 201, 154, 190, 330, 410],
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="直接访问",
# stack="总量",
y_axis=[320, 332, 301, 334, 390, 330, 320],
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="搜索引擎",
# stack="总量",
y_axis=[820, 932, 901, 934, 1290, 1330, 1320],
label_opts=opts.LabelOpts(is_show=False),
)
## 全局选项设置
.set_global_opts(
title_opts=opts.TitleOpts(title="折线图堆叠"), # 主标题
tooltip_opts=opts.TooltipOpts(trigger="axis"), # 鼠标放到点上会有这个x处的所有y的组合显示
yaxis_opts=opts.AxisOpts(
type_="value",
axistick_opts=opts.AxisTickOpts(is_show=True), # y轴刻度处是否显示一条小短横指示刻度
splitline_opts=opts.SplitLineOpts(is_show=True), # 网格横线显示
),
xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), # x轴标签是在刻度处显示还是两个刻度中间显示,这样是前者
)
.render_notebook()
)
c
折线图,带标记线
## 数据准备:1月2月收治期,就诊期,潜伏期
jan= pd.read_excel(r"E:\Bing\研究生\案例大赛\哈尔滨活动轨迹\198\1月.xlsx","Sheet1")
x = [x+1 for x in range(len(jan))]
jan
import pyecharts.options as opts
from pyecharts.charts import Line
c = (
Line()
.add_xaxis(x)
.add_yaxis(
"潜伏期", # 图例标签
jan['潜伏期'], # y值
label_opts=opts.LabelOpts(is_show=False), # 是否显示每个点的数值
is_symbol_show = True, # 是否显示每个点的小圆圈标记
is_smooth=True, # 是否平滑曲线
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]), # 显示标记线,类型是平均值
#label_opts=opts.LabelOpts(position="end"),
)
.add_yaxis(
"收治期",
jan['收治期'],
is_symbol_show = True,
label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.add_yaxis(
"活动期",
jan['活动期'],
is_symbol_show = True,
label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.set_global_opts(title_opts=opts.TitleOpts(title="1月时间节点")) # 主标题
.render_notebook()
)
c