文章目录

  • 一.饼图、环形图
  • 二.条形图
  • 三.折线图



官方中文文档,很详细很好看,配着里面的示例


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

android MPAndroidChart饼状图图例 pyecharts饼状图_饼图
多个饼图

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

android MPAndroidChart饼状图图例 pyecharts饼状图_Line_02
暗黑色系:
android MPAndroidChart饼状图图例 pyecharts饼状图_折线图_03

三.折线图

堆叠折线图

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

android MPAndroidChart饼状图图例 pyecharts饼状图_饼图_04
折线图,带标记线

## 数据准备: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