首先要安裝模塊
conda install pyecharts
或者
pip install pyecharts
具體的echarts操作和介紹可見官網echarts,我也推薦W3Cschool,而pyecharts可以參考pyecharts官網,很詳盡。
再進行下面可視化的時候,首先都會引入options
from pyecharts import options as opts
一、儀表盤
代碼:
from pyecharts.charts import Gauge
def gauge_base() -> Gauge:
c = (
Gauge(init_opts=opts.InitOpts(page_title="儀表盤-演示"))
.add(
"",
[("我的進化程度", 80)],
title_label_opts=opts.LabelOpts(horizontal_align="center")
)
.set_global_opts(title_opts=opts.TitleOpts(title="儀表盤演示", pos_left="center"))
)
return c
gauge_base().render()
效果:
二、漏斗圖
代碼:
from pyecharts.charts import Funnel
def funner_base() -> Funnel:
c = (
Funnel(init_opts=opts.InitOpts(page_title="漏斗圖-演示"))
.add(
"funnel",
[z for z in zip(["第一階段", "第二階段", "第三階段"], [10, 50, 80])],
label_opts=opts.LabelOpts(position="inside")
)
.set_global_opts(title_opts=opts.TitleOpts(title="漏斗圖演示", pos_left="right"))
)
return c
funner_base().render()
效果:
三、圖
代碼:
from pyecharts.charts import Graph
def graph_base() -> Graph:
nodes = [
opts.GraphNode(name="節點0", symbol_size=80),
opts.GraphNode(name="節點1", symbol_size=60),
opts.GraphNode(name="節點2", symbol_size=60),
opts.GraphNode(name="節點3", symbol_size=60),
opts.GraphNode(name="節點4", symbol_size=60),
opts.GraphNode(name="節點1.1", symbol_size=40),
opts.GraphNode(name="節點1.2", symbol_size=40),
opts.GraphNode(name="節點1.3", symbol_size=40),
opts.GraphNode(name="節點1.4", symbol_size=40),
opts.GraphNode(name="節點3.1", symbol_size=40),
opts.GraphNode(name="節點3.2", symbol_size=40),
opts.GraphNode(name="節點3.3", symbol_size=40),
opts.GraphNode(name="節點3.4", symbol_size=40),
opts.GraphNode(name="節點3.3.1", symbol_size=20),
opts.GraphNode(name="節點3.3.2", symbol_size=20),
opts.GraphNode(name="節點3.3.3", symbol_size=20),
opts.GraphNode(name="節點3.3.4", symbol_size=20)
]
links = [
opts.GraphLink(source="節點0", target="節點1", value=1),
opts.GraphLink(source="節點0", target="節點2", value=1),
opts.GraphLink(source="節點0", target="節點3", value=1),
opts.GraphLink(source="節點0", target="節點4", value=1),
opts.GraphLink(source="節點1", target="節點1.1", value=2),
opts.GraphLink(source="節點1", target="節點1.2", value=2),
opts.GraphLink(source="節點1", target="節點1.3", value=2),
opts.GraphLink(source="節點1", target="節點1.4", value=2),
opts.GraphLink(source="節點3", target="節點3.1", value=2),
opts.GraphLink(source="節點3", target="節點3.2", value=2),
opts.GraphLink(source="節點3", target="節點3.3", value=2),
opts.GraphLink(source="節點3", target="節點3.4", value=2),
opts.GraphLink(source="節點3.3", target="節點3.3.1", value=3),
opts.GraphLink(source="節點3.3", target="節點3.3.2", value=3),
opts.GraphLink(source="節點3.3", target="節點3.3.3", value=3),
opts.GraphLink(source="節點3.3", target="節點3.3.4", value=3),
]
c = (
Graph(init_opts=opts.InitOpts(width="1080px", height="700px", page_title="圖-演示"))
.add(
"graph",
nodes,
links,
label_opts=opts.LabelOpts(position="inside"),
repulsion=2000,
is_draggable=True,
layout="force",
symbol="roundRect",
edge_label=opts.LabelOpts(
is_show=True,
position="middle",
formatter="{b} "
)
)
.set_global_opts(title_opts=opts.TitleOpts(title="圖演示", pos_left="center"))
)
return c
graph_base().render()
效果:
四、水球圖
代碼:
from pyecharts.charts import Liquid
def liquid_base() -> Liquid:
c = (
Liquid(init_opts=opts.InitOpts(page_title="水球圖-演示"))
.add(
"liquid",
[0.78],
shape="rect"
)
.set_global_opts(title_opts=opts.TitleOpts(title="水球圖", pos_left="center"))
)
return c
liquid_base().render()
效果:
五、餅圖
代碼:
from pyecharts.charts import Pie
def pie_base() -> Pie:
c = (
Pie(init_opts=opts.InitOpts(page_title="餅圖-演示"))
.add(
"pie",
[("男人購物花費", 20), ("女人購物花費", 80)],
radius=["40%", "60%"],
center=["50%", "50%"],
label_opts=opts.LabelOpts(formatter="{b}:{c}%")
)
.set_global_opts(
title_opts=opts.TitleOpts(title="餅圖", pos_left="center", pos_top="10%"),
legend_opts=opts.LegendOpts(orient="vertical", pos_right="20%", pos_top="50%")
)
)
return c
pie_base().render()
效果:
六、詞雲圖
代碼:
from pyecharts.charts import WordCloud
def wcloud_base() -> WordCloud:
words = [("我",10000), ("比爾蓋茨",9000), ("索羅斯",8000), ("馬雲",7000), ("馬化騰",6000), ("史玉柱",4000), ("王傳福",900), ("*大大",10000), ("徐鳳年",10000), ("洪敬巖",3000), ("王初冬",2000), ("劍來",1000)]
c = (
WordCloud(init_opts=opts.InitOpts(page_title="詞雲圖-演示"))
.add(
"wordcloud",
words,
shape="cardioid"
)
.set_global_opts(title_opts=opts.TitleOpts(title="詞雲圖", pos_left="center"))
)
return c
wcloud_base().render()
效果:
七、柱狀圖
代碼:
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
def bar_base() -> Bar:
c = (
Bar(init_opts=opts.InitOpts(page_title="柱狀圖-演示"))
.add_xaxis(
["現有確診/累計確診", "現有疑似/累計治癒", "現有重症/累計死亡"]
)
.add_yaxis(
"",
[29994, 587, 6806]
)
.add_yaxis(
"",
[80303, 47362, 2947]
)
.set_series_opts(
itemstyle_opts={
"color":JsCode("""{
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{offset: 0, color: 'red'},
{offset: 1, color: 'blue'}
],
global: false
}"""
)
}
)
.set_global_opts(
title_opts=opts.TitleOpts(title="2020年03月03日疫情實時大數據", pos_left="center"),
legend_opts=opts.LegendOpts(orient="victical", pos_right="10%", pos_top="center")
)
)
return c
bar_base().render()
效果:
八、雷達圖
代碼:
from pyecharts.charts import Radar
def radar_base() -> Radar:
c = (
Radar(init_opts=opts.InitOpts(page_title="雷達圖-演示"))
.add_schema(
schema=[
opts.RadarIndicatorItem(name="編程水平", max_=100),
opts.RadarIndicatorItem(name="數學基本功", max_=100),
opts.RadarIndicatorItem(name="記憶力", max_=100),
opts.RadarIndicatorItem(name="理解力", max_=100),
opts.RadarIndicatorItem(name="自學能力", max_=100),
opts.RadarIndicatorItem(name="抗壓能力", max_=100)
],
shape="circle"
)
.add(
"我的表現",
[[60, 65, 30, 55, 75, 70]],
areastyle_opts=opts.AreaStyleOpts(opacity=0.1)
)
.add(
"平均水平",
[[60, 60, 60, 60, 60, 60]],
linestyle_opts=opts.LineStyleOpts(width=2, color='blue')
)
.set_global_opts(
title_opts=opts.TitleOpts(title="雷達圖", pos_left="center"),
legend_opts=opts.LegendOpts(pos_right="20%", pos_top="10%", orient="vectical")
)
)
return c
radar_base().render()
效果:
九、旭日圖
其實就是日頭爆炸圖
代碼:
from pyecharts.charts import Sunburst
def sunburst_base() -> Sunburst:
data = [
opts.SunburstItem(
name="數據採集",
children=[
opts.SunburstItem(name="爬蟲", value=50),
opts.SunburstItem(name="交換共享", value=20),
opts.SunburstItem(name="第三方購買", value=20),
opts.SunburstItem(name="其他方式", value=10)
]
),
opts.SunburstItem(
name="數據存儲",
children=[
opts.SunburstItem(name="關係型數據庫", value=60),
opts.SunburstItem(name="鍵值存儲庫", value=10),
opts.SunburstItem(name="列式存儲庫", value=10),
opts.SunburstItem(name="面向文檔數據庫", value=10),
opts.SunburstItem(name="圖數據庫", value=10)
]
),
opts.SunburstItem(
name="數據處理",
children=[
opts.SunburstItem(name="空值填充", value=20),
opts.SunburstItem(name="異常值處理", value=20),
opts.SunburstItem(name="新增特徵", value=20),
opts.SunburstItem(name="熱編碼", value=20),
opts.SunburstItem(name="標準化處理", value=20)
]
),
opts.SunburstItem(
name="數據統計分析",
children=[
opts.SunburstItem(name="描述性分析", value=30),
opts.SunburstItem(name="多維度統計", value=40),
opts.SunburstItem(name="對比統計", value=30)
]
),
opts.SunburstItem(
name="數據挖掘",
children=[
opts.SunburstItem(name="分類", value=30),
opts.SunburstItem(name="預測", value=30),
opts.SunburstItem(name="聚類", value=20),
opts.SunburstItem(name="迴歸", value=20)
]
),
opts.SunburstItem(
name="數據展示",
children=[
opts.SunburstItem(name="大屏展示", value=20),
opts.SunburstItem(name="系統頁面展示", value=40),
opts.SunburstItem(name="報告展示", value=40),
]
),
opts.SunburstItem(
name="數據產品應用",
children=[
opts.SunburstItem(name="推薦系統", value=30),
opts.SunburstItem(name="翻譯系統", value=20),
opts.SunburstItem(name="自動駕駛", value=15),
opts.SunburstItem(name="人臉識別", value=15),
opts.SunburstItem(name="圖片識別文字", value=20)
]
)
]
c = (
Sunburst(init_opts=opts.InitOpts(page_title="旭日圖-演示"))
.add(
"sunburst",
data,
radius=["20%", "85%"]
)
.set_global_opts(title_opts=opts.TitleOpts(title="旭日圖", pos_left="center"))
)
return c
sunburst_base().render()
效果:
更多情況可以參考ecahrts官網或pyecharts官網,還推薦一個echarts社區,裏面有很多富有創意的可視化