首頁 > 軟體

Python繪製折線圖視覺化神器pyecharts案例

2022-07-04 22:01:23

前言

相信有很多的小夥伴看了如此多個案例之後肯定有所發現,每一個案例都對應著每一個設定,如果是官方設定檔案,說實話看起來真的很難,這樣通過案例實現來解決各種引數的設定,我覺得有一定的參考價值和學習意義,正所謂“磨刀不誤砍工”,如何把視覺化做的爐火純青,任重而道遠也!

說明:有些資料是呼叫相關庫資源:from pyecharts.faker import Faker,需要自己新增資料,非常簡單,這個不用擔心。

你覺得上述圖形用的上嗎,我估計在平時的小場景可能用不到,但是做股票好像不錯喲!

折線圖模板系列

自定義標籤資料折線圖

有時候我們不想要把所有的資料標籤都顯示出來,因為這樣太繁雜了,資料視覺化的原則就是在炫酷的同時把圖表準確的呈現在使用者的面前,這就需要我們按照特定的場景選擇特定的圖形。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

x, y = Faker.choose(), Faker.values()#更改資料集即可
c = (
Line({"theme":ThemeType.MACARONS})#不新增預設紅色
.add_xaxis(x)
.add_yaxis(
"商家A",
y,
markpoint_opts=opts.MarkPointOpts(
data=[opts.MarkPointItem(name="自定義標記點", coord=[x[2], y[2]], value=y[2])] # 這裡定義要顯示的標籤資料
),
)
.set_global_opts(title_opts=opts.TitleOpts(title="標題"),
xaxis_opts=opts.AxisOpts(
name='類別',
name_location='middle',
name_gap=30, # 標籤與軸線之間的距離,預設為20,最好不要設定20
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16 # 標籤字型大小
)),
yaxis_opts=opts.AxisOpts(
name='數量',
name_location='middle',
name_gap=30,
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16
# font_weight='bolder',
)),
# toolbox_opts=opts.ToolboxOpts() # 工具選項
)
.render("自定義標籤.html")
)

一天用電量折線圖(特定場景)

此模板可以作為一天用電量的應用,也可以在此基礎上進行更改,形成其他類別的折線圖,只是提供模板,你可以根據自己的應用場景來解決問題。

import pyecharts.options as opts
from pyecharts.charts import Line
x_data = [
"00:00",
"01:15",
"02:30",
"03:45",
"05:00",
"06:15",
"07:30",
"08:45",
"10:00",
"11:15",
"12:30",
"13:45",
"15:00",
"16:15",
"17:30",
"18:45",
"20:00",
"21:15",
"22:30",
"23:45",
]
y_data = [
300,
280,
250,
260,
270,
300,
550,
500,
400,
390,
380,
390,
400,
500,
600,
750,
800,
700,
600,
400,
]

(
Line(init_opts=opts.InitOpts(width="1200px", height="600px"))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="用電量",
y_axis=y_data,
is_smooth=True,
label_opts=opts.LabelOpts(is_show=False),
linestyle_opts=opts.LineStyleOpts(width=2),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="一天用電量分佈", subtitle="純屬虛構"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
xaxis_opts=opts.AxisOpts(boundary_gap=False),
yaxis_opts=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(formatter="{value} W"),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
visualmap_opts=opts.VisualMapOpts(
is_piecewise=True,
dimension=0,
pieces=[
{"lte": 6, "color": "green"},
{"gt": 6, "lte": 8, "color": "red"},
{"gt": 8, "lte": 14, "color": "green"},
{"gt": 14, "lte": 17, "color": "red"},
{"gt": 17, "color": "green"},
],
),
)
.set_series_opts(
markarea_opts=opts.MarkAreaOpts(
data=[
opts.MarkAreaItem(name="早高峰", x=("07:30", "10:00")),
opts.MarkAreaItem(name="晚高峰", x=("17:30", "21:15")),
]
)
)
.render("用電量折線圖.html")
)

斷點折線圖(根據場景進行設定)

import pyecharts.options as opts
from pyecharts.charts import Line
(
Line(init_opts=opts.InitOpts(width="1200px", height="600px"))
.add_xaxis(xaxis_data=["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"])
.add_yaxis(
series_name="",
y_axis=[120, 200, 150, 80, 70, 110, 130],
symbol="triangle",
symbol_size=20,
linestyle_opts=opts.LineStyleOpts(color="green", width=4, type_="dashed"),
label_opts=opts.LabelOpts(is_show=False),
itemstyle_opts=opts.ItemStyleOpts(
border_width=3, border_color="yellow", color="blue"
),
)
.set_global_opts(
xaxis_opts=opts.AxisOpts(type_="category",
name='類別',
name_location='middle',
name_gap=30, # 標籤與軸線之間的距離,預設為20,最好不要設定20
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16 # 標籤字型大小
)
),
yaxis_opts=opts.AxisOpts(
type_="value",
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
tooltip_opts=opts.TooltipOpts(is_show=False),
)
.render("斷點折線圖.html")
)

雙摺線圖顯示最低最高資料標籤(不顯示其他資料標籤)

有時候折線圖裡面的資料太多了,但是我們想要一眼就直觀的看到資料的最低最高是多少,雖然pyecharts可以把滑鼠放在點上就會顯示,但是如果做出PPT或者圖片,那麼就有點不現實了。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
Line()
.add_xaxis(Faker.choose())
.add_yaxis(
"商家A",
Faker.values(),
label_opts=opts.LabelOpts(is_show=False),
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min"),
opts.MarkPointItem(type_="max")]),

)
.add_yaxis(
"商家B",
Faker.values(),
label_opts=opts.LabelOpts(is_show=False),
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min"),
opts.MarkPointItem(type_="max")]),
)
.set_global_opts(title_opts=opts.TitleOpts(title="標題"),
xaxis_opts=opts.AxisOpts(
name='類別',
name_location='middle',
name_gap=30, # 標籤與軸線之間的距離,預設為20,最好不要設定20
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16 # 標籤字型大小
)),
yaxis_opts=opts.AxisOpts(
name='數量',
name_location='middle',
name_gap=30,
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16
# font_weight='bolder',
)),
# toolbox_opts=opts.ToolboxOpts() # 工具選項
)
.render("雙摺線圖顯示最低最高.html")
)

雙摺線圖顯示平均刻度資料標籤(資料可顯示)

這個雙摺線圖可以運用在我們需要知道一類資料集裡面的平均值是多少,那麼我們就可以根據這個來設定相關引數了,下面的圖例我們沒有顯示資料,也可以顯示資料。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
Line()
.add_xaxis(Faker.choose())
.add_yaxis(
"商家A",
Faker.values(),
label_opts=opts.LabelOpts(is_show=False),#允許顯示資料
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.add_yaxis(
"商家B",
Faker.values(),
label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.set_global_opts(title_opts=opts.TitleOpts(title="標題"),
xaxis_opts=opts.AxisOpts(
name='類別',
name_location='middle',
name_gap=30, # 標籤與軸線之間的距離,預設為20,最好不要設定20
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16 # 標籤字型大小
)),
yaxis_opts=opts.AxisOpts(
name='數量',
name_location='middle',
name_gap=30,
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16
# font_weight='bolder',
)),
# toolbox_opts=opts.ToolboxOpts() # 工具選項
)
.render("雙摺線圖顯示平均刻度.html")
)

斷點折線圖(顯示資料項)

前面的圖例裡面,沒有對資料進行展示,也沒有資料標籤,這個圖例是對之前的進行改造和設計升級的。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
Line()
.add_xaxis(xaxis_data=Faker.choose())
.add_yaxis(
"商家A",
Faker.values(),
symbol="triangle",
symbol_size=20,
linestyle_opts=opts.LineStyleOpts(color="green", width=4, type_="dashed"),
itemstyle_opts=opts.ItemStyleOpts(
border_width=3, border_color="yellow", color="blue"
),#可進行多維疊加
)
.set_global_opts(title_opts=opts.TitleOpts(title="標題"),
xaxis_opts=opts.AxisOpts(
name='類別',
name_location='middle',
name_gap=30, # 標籤與軸線之間的距離,預設為20,最好不要設定20
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16 # 標籤字型大小
)),
yaxis_opts=opts.AxisOpts(
name='數量',
name_location='middle',
name_gap=30,
name_textstyle_opts=opts.TextStyleOpts(
font_family='Times New Roman',
font_size=16
# font_weight='bolder',
)),
# toolbox_opts=opts.ToolboxOpts() # 工具選項
)
.render("斷點顯示資料.html")
)

面積折線圖(不緊貼)

前面有一個圖形是一個曲線的折線圖,緊貼Y軸,此圖例是不緊貼的且是折線的形式。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
Line()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
.add_yaxis("商家B", Faker.values(), areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
.set_global_opts(title_opts=opts.TitleOpts(title="標題"))
.render("面積折線圖不緊貼.html")
)

3D旋轉彈簧圖

執行生成之後,自動旋轉。有的小夥伴很是好奇,為什麼會有這種炫酷的圖形,這種圖形是如何設計出來的,看了程式碼我們發現其實並不難,程式碼量也不是很複雜,原因就是它基於演演算法數學設計的,這也就是為什麼說有“幾何之美”的這一概念了。

到此這篇關於Python繪製折線圖視覺化神器pyecharts的文章就介紹到這了,更多相關Python pyecharts內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com