如何在Python中使用pyecharts圖形畫可視化大屏
引言
pyecharts
是一個用于生成 ECharts 圖表的類庫,可以方便地在 Python 中進行數(shù)據(jù)可視化。ECharts 是一種使用 JavaScript 實現(xiàn)的,功能豐富的圖表庫。通過 pyecharts
,我們可以在 Python 中創(chuàng)建各種類型的圖表,包括折線圖、柱狀圖、餅圖、散點圖等。使用pyecharts進行可視化大屏的優(yōu)點有很多,比如:
豐富的圖表類型:pyecharts支持多種類型的圖表,可以滿足不同的數(shù)據(jù)可視化需求。
高效的性能:pyecharts的性能非常好,可以快速生成大量的圖表。
易用性:pyecharts的API設(shè)計簡潔易用,可以快速上手。
可擴展性:pyecharts支持自定義主題和與其他Python庫的集成,方便用戶擴展功能。
一.Pyecharts的基本用法
1.語法結(jié)構(gòu)
Pyecharts的語法結(jié)構(gòu)包括以下部分:
- 圖表類型:Pyecharts支持多種圖表類型,如柱狀圖、折線圖、餅圖、散點圖等。每種圖表類型都有自己的方法和屬性,用于設(shè)置圖表的外觀和數(shù)據(jù)。
- 數(shù)據(jù):Pyecharts圖表的數(shù)據(jù)以列表形式給出,每個列表代表一個系列的數(shù)據(jù)。每個系列可以包含多個數(shù)據(jù)點,每個數(shù)據(jù)點包含x軸和y軸的值。
- 配置項:Pyecharts圖表支持多種配置項,如標(biāo)題、圖例、提示框、工具欄等。這些配置項可以用于設(shè)置圖表的外觀和交互方式。
- 方法鏈:Pyecharts圖表的方法可以鏈?zhǔn)秸{(diào)用,例如
add_xaxis().add_yaxis()
。這種鏈?zhǔn)秸{(diào)用方式使得代碼更加簡潔和易讀。
總之,Pyecharts的語法結(jié)構(gòu)基于ECharts的語法結(jié)構(gòu),通過Python類庫的方式實現(xiàn)。使用Pyecharts可以方便地在Python中創(chuàng)建各種類型的圖表,并對其進行配置和定制。
二.繪制4個pyecharts圖形
pyecharts是一個基于Python語言的數(shù)據(jù)可視化庫,可以用來創(chuàng)建各種類型的圖形,如折線圖、柱狀圖、散點圖、餅圖、地圖等。它基于Echarts庫,通過Python語言提供了更簡單、更便捷的方式來創(chuàng)建圖形,無需編寫復(fù)雜的JavaScript代碼。使用pyecharts,用戶可以通過簡單的Python代碼來定義圖形的數(shù)據(jù)、樣式、布局等,然后生成HTML文件,從而實現(xiàn)圖形的展示和交互。通過pyecharts,用戶可以在Python環(huá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庫,可以使用以下命令進行安裝:
pip install pyecharts
2.繪制散點圖
1.安裝pyecharts庫,導(dǎo)入必要的包:
# 繪制一個散點圖 import pandas as pd from pyecharts.charts import Scatter from pyecharts import options as opts
2.導(dǎo)入使用的數(shù)據(jù)集并準(zhǔn)備需要的數(shù)據(jù)并繪制散點圖
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('散點圖.html') 以下是這段代碼的逐行解釋: scatter=(:開始定義一個名為scatter的變量,該變量將存儲生成的散點圖。 Scatter():創(chuàng)建一個新的Scatter對象,這是生成散點圖的基礎(chǔ)。 .add_xaxis(xaxis_data=x):為散點圖添加x軸的數(shù)據(jù)。其中,x是一個包含x軸數(shù)據(jù)的列表或數(shù)組。 .add_yaxis('', y_axis=y, symbol_size=12, label_opts=opts.LabelOpts(is_show=False)): '':y軸的名稱(這里為空字符串,表示不顯示名稱)。 y_axis=y:為散點圖添加y軸的數(shù)據(jù)。其中,y是一個包含y軸數(shù)據(jù)的列表或數(shù)組。 symbol_size=12:設(shè)置散點的大小為12。 label_opts=opts.LabelOpts(is_show=False):設(shè)置標(biāo)簽的選項,這里設(shè)置為不顯示標(biāo)簽。 .set_global_opts(:設(shè)置全局的配置選項。 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()對象的創(chuàng)建。 scatter.render_notebook():在Jupyter Notebook中渲染這個散點圖。如果在一個Jupyter環(huán)境中運行這段代碼,能看到一個在Notebook中顯示的散點圖。 scatter.render('散點圖.html'):這是一個注釋行,可以使用scatter.render('散點圖.html')將散點圖渲染到一個名為"散點圖.html"的HTML文件中。
以下是在jupyter中運行上面的代碼所得到的散點圖:
3.繪制餅圖
根據(jù)以上繪制散點圖的具體描述,我們現(xiàn)在來繪制一個餅圖,繪制過程不明白的可以參考上面散點圖的詳細(xì)描述!
(1)導(dǎo)入數(shù)據(jù)包與所使用的數(shù)據(jù)文件
(2)這一段代碼使用了數(shù)據(jù)分箱 (數(shù)據(jù)分桶)和分組統(tǒng)計
- 使用
pd.cut
方法將df['年齡']
的數(shù)據(jù)分為四個年齡段:少年、青年、中年和老年。 - 2. 分箱的邊界是:0, 20, 40, 60, 100。
- 每個年齡段用相應(yīng)的標(biāo)簽標(biāo)識。
- 使用
df.groupby('年齡段').size()
對分箱后的數(shù)據(jù)進行分組統(tǒng)計,得到每個年齡段的人數(shù)。
# 數(shù)據(jù)分箱 df['年齡段'] = pd.cut( df['年齡'], bins = [0,20,40,60,100], labels=['少年','青年','中年','老年'] ) # 分組統(tǒng)計 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ù)的系列名稱,如果只有一個系列的數(shù)據(jù),填空字符 data, radius = ['30%','75%'], #橫向 左右 center=['25%','50%'], #上下 rosetype='radius' ) ) pie.render_notebook()
以下是圖形運行展示:
4.雷達(dá)圖
(1)繪制雷達(dá)圖步驟:1.導(dǎo)入數(shù)據(jù)-2.定義數(shù)據(jù)標(biāo)簽-3.設(shè)置全局配置項-4.添加數(shù)據(jù)標(biāo)簽-5.設(shè)置圖例和標(biāo)題-6.最后打印圖表
(2)創(chuàng)建雷達(dá)圖并設(shè)置全局配置項:
radar = Radar()
:創(chuàng)建一個新的雷達(dá)圖對象。radar.add_schema(schema=[opts.RadarIndicatorItem(name=labels[i], max_=20) for i in range(len(labels))])
:為雷達(dá)圖添加指標(biāo)和最大值。這里使用了一個列表推導(dǎo)式來為每個指標(biāo)設(shè)置名稱和最大值。
(3) 添加數(shù)據(jù)和標(biāo)簽:
- 使用一個循環(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 = ['年齡', '群眾', '團員', '女生', '男生', '老師'] # 創(chuàng)建雷達(dá)圖并設(shè)置全局配置項 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ù),然后按照“工作地所在省份”進行分組并統(tǒng)計每個省份的會員卡號數(shù)量。最后,對結(jié)果進行降序排序并取前30名。
(2)進行數(shù)據(jù)準(zhǔn)備:將result
的索引轉(zhuǎn)化為列表并賦值給x
,然后將索引和值都轉(zhuǎn)化為列表并分別賦值給y1
和y2
。
(3).reversal_axis()
是用來實現(xiàn)柱形圖的,即從大到小的順序顯示。最后,設(shè)置全局配置項,包括標(biāo)題、標(biāo)題鏈接和標(biāo)題文本樣式。
#繪制柱形圖 from pyecharts.charts import Bar df1=pd.read_excel('數(shù)據(jù)集/航空公司數(shù)據(jù).xlsx') result = df1.groupby('工作地所在省份')['會員卡號'].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 表示堆積效果,兩個stack參數(shù)值要相等 .add_yaxis('省份',y2,stack=100) .reversal_axis() #實現(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( #文字樣本配置項 color = 'red', font_size = 20, ) ) ) ) y.render_notebook()
以下是展示結(jié)果圖片:
三.制作大屏標(biāo)題
1.代碼解釋
1.這段代碼是使用pyecharts
庫來創(chuàng)建一個標(biāo)題為“大屏標(biāo)題”的餅圖,并設(shè)置了一些全局選項。
2.使用datetime.now()
獲取當(dāng)前時間,然后使用strftime('%Y-%m-%d')
格式化為'年-月-日'的格式,并賦值給now_time
變量。
3.使用render_notebook()
方法將圖表渲染到Jupyter Notebook中。這樣,當(dāng)在Jupyter環(huán)境中運行這段代碼時,我們會看到一個顯示“大屏標(biāo)題”和“截至:當(dāng)前時間”的空白區(qū)域,這是構(gòu)成大屏的標(biāo)題部分。
from pyecharts.charts import Pie from datetime import datetime now_time = datetime.now().strftime('%Y-%m-%d') # 獲取當(dāng)前時間 big_title = ( Pie() # 不畫圖,只顯示一個標(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對象
使用pyecharts
庫來創(chuàng)建一個Page
對象,該對象可以用來組合多個圖表并展示在一個頁面上。
(1)添加圖表到Page對象:使用add
方法將多個圖表添加到Page
對象中。這些圖表可以是上面已經(jīng)創(chuàng)建好的,如big_title
, scatter
, pie
, radar
, 和 y
這樣,這些圖表將會被組合到一個頁面上展示啦。
from pyecharts.charts import Page page = Page() # 創(chuàng)建Page對象 page.add( # 添加圖表到Page對象 big_title, scatter, pie, radar, y ) # page.render_notebook() page.render('tp.html') # 渲染Page對象到HTML文件 在html中可以調(diào)整各個圖形的位置和大小,按“Save Config”鍵保存配置chart_config.json(有的電腦不成功)。
在運行這個代碼后可能會出現(xiàn) no test named ' false ' 的報錯:
解決方法有兩種:在anac
3.使用Python的BeautifulSoup庫來讀取和修改一個HTML文件
從bs4
模塊導(dǎo)入BeautifulSoup
類,這是一個用于解析HTML和XML文檔的庫。
from bs4 import BeautifulSoup
with open語句打開名為"tp.html"的文件,并設(shè)置模式為"r+"(讀寫模式),同時指定編碼為'utf-8',使用BeautifulSoup
類解析HTML文件內(nèi)容,并將解析后的對象賦值給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)簽被存儲在divs
變量中。 - 下面的五行代碼都是為
divs
列表中的每個元素(即每個帶有"chart-container"類的<div>
標(biāo)簽)設(shè)置樣式屬性
divs = html_bf.select('.chart-container') # 根據(jù)css定位標(biāo)簽,選中圖像的父節(jié)點標(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對象轉(zhuǎn)換為字符 html.seek(0, 0) # 光標(biāo)移動至 html.truncate() # 刪除光標(biāo)后的所有字符內(nèi)容 html.write(html_new) # 將由BeautifulSoup對象轉(zhuǎn)換得到的字符重新寫入html文件 html.close()
以上代碼的運行結(jié)果展示如圖:
總結(jié):這段代碼的主要目的是讀取一個HTML文件,并使用BeautifulSoup庫修改其中特定元素的樣式,然后重新寫入修改后的內(nèi)容
大總結(jié)
使用pyecharts進行數(shù)據(jù)可視化是一種非常有效的方式,它能夠?qū)?fù)雜的數(shù)據(jù)轉(zhuǎn)化為直觀的圖表,幫助我們更好地理解和分析數(shù)據(jù)。這是我對pyecharts進行數(shù)據(jù)可視化的一些心得體會和總結(jié):簡潔易用:pyecharts的API設(shè)計非常簡潔,使用起來非常方便。交互性強:pyecharts支持圖表之間的交互,比如可以通過鼠標(biāo)懸停在某個數(shù)據(jù)點上,顯示更多的信息。可擴展性強:pyecharts支持自定義主題,我們可以根據(jù)需要調(diào)整圖表的樣式。同時,它也支持與其他Python庫的集成,比如使用pandas進行數(shù)據(jù)處理,使用matplotlib進行數(shù)據(jù)預(yù)處理等。
在使用pyecharts進行數(shù)據(jù)可視化的過程中,我也遇到了一些問題。比如,對于一些復(fù)雜的圖表類型,可能需要花費更多的時間來學(xué)習(xí)和理解。另外,雖然pyecharts的性能很好,但是如果需要生成大量的圖表或者需要實時渲染的場景,可能需要考慮其他的解決方案。
總的來說,使用pyecharts進行數(shù)據(jù)可視化是一種非常有效的方式。它簡潔易用,交互性強,可擴展性強,性能良好,社區(qū)活躍。在未來的工作中,我會繼續(xù)使用pyecharts進行數(shù)據(jù)可視化,也會向社區(qū)貢獻自己的力量。
到此這篇關(guān)于在Python中使用pyecharts圖形畫可視化大屏的文章就介紹到這了,更多相關(guān)Python pyecharts圖形畫可視化大屏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中for語句簡單遍歷數(shù)據(jù)的方法
這篇文章主要介紹了python中for語句簡單遍歷數(shù)據(jù)的方法,以一個簡單實例形式分析了Python中for語句遍歷數(shù)據(jù)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-05-05python轉(zhuǎn)換pkl模型文件為txt文件問題
這篇文章主要介紹了python轉(zhuǎn)換pkl模型文件為txt文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06Python3爬蟲里關(guān)于代理的設(shè)置總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲里關(guān)于代理的設(shè)置總結(jié),需要的朋友們可以參考下。2020-07-07解決python subprocess參數(shù)shell=True踩到的坑
這篇文章主要介紹了解決python subprocess參數(shù)shell=True踩到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04Python字符串對齊、刪除字符串不需要的內(nèi)容以及格式化打印字符
這篇文章主要給大家介紹了關(guān)于Python字符串對齊、刪除字符串不需要的內(nèi)容以及格式化打印字符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01基于Python實現(xiàn)的購物商城管理系統(tǒng)
這篇文章主要介紹了基于Python實現(xiàn)的購物商城管理系統(tǒng),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04Numpy創(chuàng)建NumPy矩陣的簡單實現(xiàn)
本文主要介紹了Numpy創(chuàng)建NumPy矩陣的簡單實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02