好看的python可視化-pyecharts庫


官方中文文檔,很詳細很好看,配着裏面的示例
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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章