如何在Python中使用pyecharts圖形畫可視化大屏
引言
pyecharts 是一個(gè)用于生成 ECharts 圖表的類庫,可以方便地在 Python 中進(jìn)行數(shù)據(jù)可視化。ECharts 是一種使用 JavaScript 實(shí)現(xiàn)的,功能豐富的圖表庫。通過 pyecharts,我們可以在 Python 中創(chuàng)建各種類型的圖表,包括折線圖、柱狀圖、餅圖、散點(diǎn)圖等。使用pyecharts進(jìn)行可視化大屏的優(yōu)點(diǎn)有很多,比如:
豐富的圖表類型:pyecharts支持多種類型的圖表,可以滿足不同的數(shù)據(jù)可視化需求。
高效的性能:pyecharts的性能非常好,可以快速生成大量的圖表。
易用性:pyecharts的API設(shè)計(jì)簡(jiǎn)潔易用,可以快速上手。
可擴(kuò)展性:pyecharts支持自定義主題和與其他Python庫的集成,方便用戶擴(kuò)展功能。
一.Pyecharts的基本用法
1.語法結(jié)構(gòu)

Pyecharts的語法結(jié)構(gòu)包括以下部分:
- 圖表類型:Pyecharts支持多種圖表類型,如柱狀圖、折線圖、餅圖、散點(diǎn)圖等。每種圖表類型都有自己的方法和屬性,用于設(shè)置圖表的外觀和數(shù)據(jù)。
- 數(shù)據(jù):Pyecharts圖表的數(shù)據(jù)以列表形式給出,每個(gè)列表代表一個(gè)系列的數(shù)據(jù)。每個(gè)系列可以包含多個(gè)數(shù)據(jù)點(diǎn),每個(gè)數(shù)據(jù)點(diǎn)包含x軸和y軸的值。
- 配置項(xiàng):Pyecharts圖表支持多種配置項(xiàng),如標(biāo)題、圖例、提示框、工具欄等。這些配置項(xiàng)可以用于設(shè)置圖表的外觀和交互方式。
- 方法鏈:Pyecharts圖表的方法可以鏈?zhǔn)秸{(diào)用,例如
add_xaxis().add_yaxis()。這種鏈?zhǔn)秸{(diào)用方式使得代碼更加簡(jiǎn)潔和易讀。
總之,Pyecharts的語法結(jié)構(gòu)基于ECharts的語法結(jié)構(gòu),通過Python類庫的方式實(shí)現(xiàn)。使用Pyecharts可以方便地在Python中創(chuàng)建各種類型的圖表,并對(duì)其進(jìn)行配置和定制。
二.繪制4個(gè)pyecharts圖形
pyecharts是一個(gè)基于Python語言的數(shù)據(jù)可視化庫,可以用來創(chuàng)建各種類型的圖形,如折線圖、柱狀圖、散點(diǎn)圖、餅圖、地圖等。它基于Echarts庫,通過Python語言提供了更簡(jiǎn)單、更便捷的方式來創(chuàng)建圖形,無需編寫復(fù)雜的JavaScript代碼。使用pyecharts,用戶可以通過簡(jiǎn)單的Python代碼來定義圖形的數(shù)據(jù)、樣式、布局等,然后生成HTML文件,從而實(shí)現(xiàn)圖形的展示和交互。通過pyecharts,用戶可以在Python環(huán)境下靈活、高效地進(jìn)行數(shù)據(jù)可視化工作。
1.需要注意的問題
(1).繪制pyecharts圖形需要導(dǎo)入庫的相關(guān)類和函數(shù):在Python文件中導(dǎo)入pyecharts庫的相關(guān)類和函數(shù):
import pandas as pd from pyecharts.charts import Scatter from pyecharts import options as opts

(2).安裝pyecharts庫:通過pip安裝pyecharts庫,可以使用以下命令進(jìn)行安裝:
pip install pyecharts

2.繪制散點(diǎn)圖
1.安裝pyecharts庫,導(dǎo)入必要的包:
# 繪制一個(gè)散點(diǎn)圖 import pandas as pd from pyecharts.charts import Scatter from pyecharts import options as opts
2.導(dǎo)入使用的數(shù)據(jù)集并準(zhǔn)備需要的數(shù)據(jù)并繪制散點(diǎn)圖

scatter=(
Scatter()
.add_xaxis(xaxis_data=x)
.add_yaxis(
'',
y_axis=y,
symbol_size=12,
label_opts=opts.LabelOpts(is_show=False)
)
.set_global_opts(
xaxis_opts=opts.AxisOpts(
type_='value',
),
yaxis_opts=opts.AxisOpts(
type_='value',
)
)
)
scatter.render_notebook()
#scatter.render('散點(diǎn)圖.html')
以下是這段代碼的逐行解釋:
scatter=(:開始定義一個(gè)名為scatter的變量,該變量將存儲(chǔ)生成的散點(diǎn)圖。
Scatter():創(chuàng)建一個(gè)新的Scatter對(duì)象,這是生成散點(diǎn)圖的基礎(chǔ)。
.add_xaxis(xaxis_data=x):為散點(diǎn)圖添加x軸的數(shù)據(jù)。其中,x是一個(gè)包含x軸數(shù)據(jù)的列表或數(shù)組。
.add_yaxis('', y_axis=y, symbol_size=12, label_opts=opts.LabelOpts(is_show=False)):
'':y軸的名稱(這里為空字符串,表示不顯示名稱)。
y_axis=y:為散點(diǎn)圖添加y軸的數(shù)據(jù)。其中,y是一個(gè)包含y軸數(shù)據(jù)的列表或數(shù)組。
symbol_size=12:設(shè)置散點(diǎn)的大小為12。
label_opts=opts.LabelOpts(is_show=False):設(shè)置標(biāo)簽的選項(xiàng),這里設(shè)置為不顯示標(biāo)簽。
.set_global_opts(:設(shè)置全局的配置選項(xiàng)。
xaxis_opts=opts.AxisOpts(type_='value',):設(shè)置x軸的類型為數(shù)值型。
yaxis_opts=opts.AxisOpts(type_='value',):設(shè)置y軸的類型為數(shù)值型。
):結(jié)束.set_global_opts()方法的調(diào)用。
): 結(jié)束Scatter()對(duì)象的創(chuàng)建。
scatter.render_notebook():在Jupyter Notebook中渲染這個(gè)散點(diǎn)圖。如果在一個(gè)Jupyter環(huán)境中運(yùn)行這段代碼,能看到一個(gè)在Notebook中顯示的散點(diǎn)圖。
scatter.render('散點(diǎn)圖.html'):這是一個(gè)注釋行,可以使用scatter.render('散點(diǎn)圖.html')將散點(diǎn)圖渲染到一個(gè)名為"散點(diǎn)圖.html"的HTML文件中。以下是在jupyter中運(yùn)行上面的代碼所得到的散點(diǎn)圖:

3.繪制餅圖
根據(jù)以上繪制散點(diǎn)圖的具體描述,我們現(xiàn)在來繪制一個(gè)餅圖,繪制過程不明白的可以參考上面散點(diǎn)圖的詳細(xì)描述!
(1)導(dǎo)入數(shù)據(jù)包與所使用的數(shù)據(jù)文件

(2)這一段代碼使用了數(shù)據(jù)分箱 (數(shù)據(jù)分桶)和分組統(tǒng)計(jì)
- 使用
pd.cut方法將df['年齡']的數(shù)據(jù)分為四個(gè)年齡段:少年、青年、中年和老年。 - 2. 分箱的邊界是:0, 20, 40, 60, 100。
- 每個(gè)年齡段用相應(yīng)的標(biāo)簽標(biāo)識(shí)。
- 使用
df.groupby('年齡段').size()對(duì)分箱后的數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì),得到每個(gè)年齡段的人數(shù)。
# 數(shù)據(jù)分箱
df['年齡段'] = pd.cut(
df['年齡'],
bins = [0,20,40,60,100],
labels=['少年','青年','中年','老年']
)
# 分組統(tǒng)計(jì)
result = df.groupby('年齡段').size()
#數(shù)據(jù)準(zhǔn)備
data = [[x,int(y)] for x,y in zip(result.index,result.values)]
pie = (
Pie()
.add(
'',#數(shù)據(jù)的系列名稱,如果只有一個(gè)系列的數(shù)據(jù),填空字符
data,
radius = ['30%','75%'], #橫向 左右
center=['25%','50%'], #上下
rosetype='radius'
)
)
pie.render_notebook()以下是圖形運(yùn)行展示:

4.雷達(dá)圖
(1)繪制雷達(dá)圖步驟:1.導(dǎo)入數(shù)據(jù)-2.定義數(shù)據(jù)標(biāo)簽-3.設(shè)置全局配置項(xiàng)-4.添加數(shù)據(jù)標(biāo)簽-5.設(shè)置圖例和標(biāo)題-6.最后打印圖表
(2)創(chuàng)建雷達(dá)圖并設(shè)置全局配置項(xiàng):
radar = Radar():創(chuàng)建一個(gè)新的雷達(dá)圖對(duì)象。radar.add_schema(schema=[opts.RadarIndicatorItem(name=labels[i], max_=20) for i in range(len(labels))]):為雷達(dá)圖添加指標(biāo)和最大值。這里使用了一個(gè)列表推導(dǎo)式來為每個(gè)指標(biāo)設(shè)置名稱和最大值。
(3) 添加數(shù)據(jù)和標(biāo)簽:
- 使用一個(gè)循環(huán)來遍歷數(shù)據(jù)和標(biāo)簽,并使用
radar.add()方法將數(shù)據(jù)添加到雷達(dá)圖中。 labels[i]是當(dāng)前循環(huán)的指標(biāo)名稱。[x[i], y[i]]是當(dāng)前指標(biāo)的數(shù)據(jù)。color="pink"設(shè)置線條顏色為粉紅色。linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.9)設(shè)置線條樣式,包括寬度和透明度。
# 雷達(dá)圖
from pyecharts import options as opts
from pyecharts.charts import Radar
# 定義數(shù)據(jù)和標(biāo)簽
x = [[3, 6, 7, 8, 5, 9]]
y = [[6, 8, 2, 7, 3, 5]]
labels = ['年齡', '群眾', '團(tuán)員', '女生', '男生', '老師']
# 創(chuàng)建雷達(dá)圖并設(shè)置全局配置項(xiàng)
radar = Radar()
radar.add_schema(schema=[opts.RadarIndicatorItem(name=labels[i], max_=20) for i in range(len(labels))])
# 添加數(shù)據(jù)和標(biāo)簽
for i in range(len(x)):
radar.add(labels[i], [x[i], y[i]], color="pink", linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.9))
# 設(shè)置圖例和標(biāo)題
radar.set_global_opts(legend_opts=opts.LegendOpts(pos_left="center", pos_top="top"), title_opts=opts.TitleOpts(title="Radar Chart"))
# 渲染圖表
#radar.render("雷達(dá)圖.html")
radar.render_notebook()圖片展示:

5. 柱形圖代碼展示
(1)導(dǎo)入數(shù)據(jù)包,從Excel文件中讀取數(shù)據(jù),然后按照“工作地所在省份”進(jìn)行分組并統(tǒng)計(jì)每個(gè)省份的會(huì)員卡號(hào)數(shù)量。最后,對(duì)結(jié)果進(jìn)行降序排序并取前30名。
(2)進(jìn)行數(shù)據(jù)準(zhǔn)備:將result的索引轉(zhuǎn)化為列表并賦值給x,然后將索引和值都轉(zhuǎn)化為列表并分別賦值給y1和y2。
(3).reversal_axis()是用來實(shí)現(xiàn)柱形圖的,即從大到小的順序顯示。最后,設(shè)置全局配置項(xiàng),包括標(biāo)題、標(biāo)題鏈接和標(biāo)題文本樣式。
#繪制柱形圖
from pyecharts.charts import Bar
df1=pd.read_excel('數(shù)據(jù)集/航空公司數(shù)據(jù).xlsx')
result = df1.groupby('工作地所在省份')['會(huì)員卡號(hào)'].count().sort_values(ascending=False)[:30]
#數(shù)據(jù)準(zhǔn)備
x = result.index.tolist()
y1 = result.index.tolist()
y2 = result.values.tolist()
#畫圖
y = (
Bar( ) #init_opts=opts.InitOpts(width='600px',height='400px')
.add_xaxis(x)
.add_yaxis('人數(shù)',y1,stack=100) #stack 表示堆積效果,兩個(gè)stack參數(shù)值要相等
.add_yaxis('省份',y2,stack=100)
.reversal_axis() #實(shí)現(xiàn)條形圖效果
.set_global_opts(
title_opts=opts.TitleOpts(
title="各省份用戶人數(shù)柱形圖(前30名)",
title_link='https://www.baidu.com', #標(biāo)題鏈接
title_textstyle_opts = opts.TextStyleOpts( #文字樣本配置項(xiàng)
color = 'red',
font_size = 20,
)
)
)
)
y.render_notebook()以下是展示結(jié)果圖片:

三.制作大屏標(biāo)題
1.代碼解釋
1.這段代碼是使用pyecharts庫來創(chuàng)建一個(gè)標(biāo)題為“大屏標(biāo)題”的餅圖,并設(shè)置了一些全局選項(xiàng)。
2.使用datetime.now()獲取當(dāng)前時(shí)間,然后使用strftime('%Y-%m-%d')格式化為'年-月-日'的格式,并賦值給now_time變量。
3.使用render_notebook()方法將圖表渲染到Jupyter Notebook中。這樣,當(dāng)在Jupyter環(huán)境中運(yùn)行這段代碼時(shí),我們會(huì)看到一個(gè)顯示“大屏標(biāo)題”和“截至:當(dāng)前時(shí)間”的空白區(qū)域,這是構(gòu)成大屏的標(biāo)題部分。
from pyecharts.charts import Pie
from datetime import datetime
now_time = datetime.now().strftime('%Y-%m-%d') # 獲取當(dāng)前時(shí)間
big_title = (
Pie() # 不畫圖,只顯示一個(gè)標(biāo)題,用來構(gòu)成大屏的標(biāo)題
.set_global_opts(
title_opts=opts.TitleOpts(title="大屏標(biāo)題",
title_textstyle_opts=opts.TextStyleOpts(font_size=40,
# color='#FFFFFF',
),
subtitle = f'截至:{now_time}',
pos_top=10
)
)
)
big_title.render_notebook()1.圖表結(jié)果展示

2.使用pyecharts庫創(chuàng)建Page對(duì)象
使用pyecharts庫來創(chuàng)建一個(gè)Page對(duì)象,該對(duì)象可以用來組合多個(gè)圖表并展示在一個(gè)頁面上。
(1)添加圖表到Page對(duì)象:使用add方法將多個(gè)圖表添加到Page對(duì)象中。這些圖表可以是上面已經(jīng)創(chuàng)建好的,如big_title, scatter, pie, radar, 和 y 這樣,這些圖表將會(huì)被組合到一個(gè)頁面上展示啦。
from pyecharts.charts import Page
page = Page() # 創(chuàng)建Page對(duì)象
page.add( # 添加圖表到Page對(duì)象
big_title,
scatter,
pie,
radar,
y
)
# page.render_notebook()
page.render('tp.html') # 渲染Page對(duì)象到HTML文件
在html中可以調(diào)整各個(gè)圖形的位置和大小,按“Save Config”鍵保存配置chart_config.json(有的電腦不成功)。在運(yùn)行這個(gè)代碼后可能會(huì)出現(xiàn) no test named ' false ' 的報(bào)錯(cuò):

解決方法有兩種:在anac
3.使用Python的BeautifulSoup庫來讀取和修改一個(gè)HTML文件
從bs4模塊導(dǎo)入BeautifulSoup類,這是一個(gè)用于解析HTML和XML文檔的庫。
from bs4 import BeautifulSoup
with open語句打開名為"tp.html"的文件,并設(shè)置模式為"r+"(讀寫模式),同時(shí)指定編碼為'utf-8',使用BeautifulSoup類解析HTML文件內(nèi)容,并將解析后的對(duì)象賦值給html_bf。
with open("tp.html", "r+", encoding='utf-8') as html:
html_bf = BeautifulSoup(html, 'lxml')- 使用BeautifulSoup的
select方法來選擇所有帶有類名"chart-container"的<div>標(biāo)簽。這些標(biāo)簽被存儲(chǔ)在divs變量中。 - 下面的五行代碼都是為
divs列表中的每個(gè)元素(即每個(gè)帶有"chart-container"類的<div>標(biāo)簽)設(shè)置樣式屬性
divs = html_bf.select('.chart-container') # 根據(jù)css定位標(biāo)簽,選中圖像的父節(jié)點(diǎn)標(biāo)簽
divs[0]["style"] = "width:50%;height:99px;position:absolute;top:0px;left:10%;border-style:dashed;border-color:#000000;border-width:0px;"
divs[1]["style"] = "width:350px;height:270px;position:absolute;top:50px;left:30px;border-style:solid;border-color:#88888;border-width:2px;"
divs[2]["style"] = "width:350px;height:270px;position:absolute;top:50px;left:390px;border-style:solid;border-color:#66666;border-width:2px;"
divs[3]["style"] = "width:350px;height:260px;position:absolute;top:350px;left:30px;border-style:solid;border-color:#444444;border-width:2px;"
divs[4]["style"] = "width:350px;height:260px;position:absolute;top:350px;left:390px;border-style:solid;border-color:#444444;border-width:2px;"
body = html_bf.find("body") # 根據(jù)標(biāo)簽名稱定位到body標(biāo)簽
body["style"] = "background-color:p;" # 修改背景顏色
html_new = str(html_bf) # 將BeautifulSoup對(duì)象轉(zhuǎn)換為字符
html.seek(0, 0) # 光標(biāo)移動(dòng)至
html.truncate() # 刪除光標(biāo)后的所有字符內(nèi)容
html.write(html_new) # 將由BeautifulSoup對(duì)象轉(zhuǎn)換得到的字符重新寫入html文件
html.close()以上代碼的運(yùn)行結(jié)果展示如圖:

總結(jié):這段代碼的主要目的是讀取一個(gè)HTML文件,并使用BeautifulSoup庫修改其中特定元素的樣式,然后重新寫入修改后的內(nèi)容
大總結(jié)
使用pyecharts進(jìn)行數(shù)據(jù)可視化是一種非常有效的方式,它能夠?qū)?fù)雜的數(shù)據(jù)轉(zhuǎn)化為直觀的圖表,幫助我們更好地理解和分析數(shù)據(jù)。這是我對(duì)pyecharts進(jìn)行數(shù)據(jù)可視化的一些心得體會(huì)和總結(jié):簡(jiǎn)潔易用:pyecharts的API設(shè)計(jì)非常簡(jiǎn)潔,使用起來非常方便。交互性強(qiáng):pyecharts支持圖表之間的交互,比如可以通過鼠標(biāo)懸停在某個(gè)數(shù)據(jù)點(diǎn)上,顯示更多的信息。可擴(kuò)展性強(qiáng):pyecharts支持自定義主題,我們可以根據(jù)需要調(diào)整圖表的樣式。同時(shí),它也支持與其他Python庫的集成,比如使用pandas進(jìn)行數(shù)據(jù)處理,使用matplotlib進(jìn)行數(shù)據(jù)預(yù)處理等。
在使用pyecharts進(jìn)行數(shù)據(jù)可視化的過程中,我也遇到了一些問題。比如,對(duì)于一些復(fù)雜的圖表類型,可能需要花費(fèi)更多的時(shí)間來學(xué)習(xí)和理解。另外,雖然pyecharts的性能很好,但是如果需要生成大量的圖表或者需要實(shí)時(shí)渲染的場(chǎng)景,可能需要考慮其他的解決方案。
總的來說,使用pyecharts進(jìn)行數(shù)據(jù)可視化是一種非常有效的方式。它簡(jiǎn)潔易用,交互性強(qiáng),可擴(kuò)展性強(qiáng),性能良好,社區(qū)活躍。在未來的工作中,我會(huì)繼續(xù)使用pyecharts進(jìn)行數(shù)據(jù)可視化,也會(huì)向社區(qū)貢獻(xiàn)自己的力量。
到此這篇關(guān)于在Python中使用pyecharts圖形畫可視化大屏的文章就介紹到這了,更多相關(guān)Python pyecharts圖形畫可視化大屏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
django2筆記之路由path語法的實(shí)現(xiàn)
這篇文章主要介紹了django2筆記之路由path語法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
從環(huán)境變量到配置中心帶你掌握Python多環(huán)境配置
這篇文章主要為大家詳細(xì)介紹了Python中配置管理的藝術(shù),本文會(huì)從環(huán)境變量到配置中心帶你優(yōu)雅駕馭多環(huán)境配置,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-03-03
11行Python代碼實(shí)現(xiàn)解密摩斯密碼
摩爾斯電碼是一種時(shí)通時(shí)斷的信號(hào)代碼,通過不同的排列順序來表達(dá)不同的英文字母、數(shù)字和標(biāo)點(diǎn)符號(hào)。本文將通過Python代碼來實(shí)現(xiàn)解密摩斯密碼,感興趣的可以學(xué)習(xí)一下2022-04-04
python爬蟲把url鏈接編碼成gbk2312格式過程解析
這篇文章主要介紹了python爬蟲把url鏈接編碼成gbk2312格式過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python FastAPI 多參數(shù)傳遞的示例詳解
這篇文章主要介紹了Python FastAPI 多參數(shù)傳遞,FastAPI通過模板來匹配URL中的參數(shù)列表,大概分為三類方式傳遞參數(shù),每種方式結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
Python簡(jiǎn)單定義與使用字典dict的方法示例
這篇文章主要介紹了Python簡(jiǎn)單定義與使用字典的方法,結(jié)合簡(jiǎn)單實(shí)例形式分析了Python字典的原理、組成、定義及使用方法,需要的朋友可以參考下2017-07-07
關(guān)于pycharm中pip版本10.0無法使用的解決辦法
近期在利用 pycharm 安裝第三方庫時(shí)會(huì)提示 pip 不是最新版本, 因此對(duì) pip 進(jìn)行更新,但是生成最新版本之后, pip 中由于缺少 main 函數(shù),導(dǎo)致在 pycharm 中無法自動(dòng)安裝第三方庫。本文就介紹一下如何解決2019-10-10

