文章目录
- 一.饼图、环形图
- 二.条形图
- 三.折线图
官方中文文档,很详细很好看,配着里面的示例
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