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