Python繪制折線圖可視化神器pyecharts案例

前言

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

說明:有些數據是調用相關庫資源: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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: