目錄
? ? ? ? ? ? ? ?引言
一.Pyecharts的基本用法
1.語法結構?編輯
二.繪制4個pyecharts圖形
1.需要注意的問題
2.繪制散點圖
?編輯3.繪制餅圖
4.雷達圖
5.?柱形圖代碼展示
?三.制作大屏標題?
1.代碼解釋
?1.圖表結果展示
2.使用pyecharts庫創(chuàng)建Page對象
3.使用Python的BeautifulSoup庫來讀取和修改一個HTML文件
大總結
引言
pyecharts
?是一個用于生成 ECharts 圖表的類庫,可以方便地在 Python 中進行數(shù)據(jù)可視化。ECharts 是一種使用 JavaScript 實現(xiàn)的,功能豐富的圖表庫。通過?pyecharts
,我們可以在 Python 中創(chuàng)建各種類型的圖表,包括折線圖、柱狀圖、餅圖、散點圖等。使用pyecharts進行可視化大屏的優(yōu)點有很多,比如:
豐富的圖表類型:pyecharts支持多種類型的圖表,可以滿足不同的數(shù)據(jù)可視化需求。
高效的性能:pyecharts的性能非常好,可以快速生成大量的圖表。
易用性:pyecharts的API設計簡潔易用,可以快速上手。
可擴展性:pyecharts支持自定義主題和與其他Python庫的集成,方便用戶擴展功能。
一.Pyecharts的基本用法
1.語法結構
Pyecharts的語法結構包括以下部分:
- 圖表類型:Pyecharts支持多種圖表類型,如柱狀圖、折線圖、餅圖、散點圖等。每種圖表類型都有自己的方法和屬性,用于設置圖表的外觀和數(shù)據(jù)。
- 數(shù)據(jù):Pyecharts圖表的數(shù)據(jù)以列表形式給出,每個列表代表一個系列的數(shù)據(jù)。每個系列可以包含多個數(shù)據(jù)點,每個數(shù)據(jù)點包含x軸和y軸的值。
- 配置項:Pyecharts圖表支持多種配置項,如標題、圖例、提示框、工具欄等。這些配置項可以用于設置圖表的外觀和交互方式。
- 方法鏈:Pyecharts圖表的方法可以鏈式調用,例如
add_xaxis().add_yaxis()
。這種鏈式調用方式使得代碼更加簡潔和易讀。
總之,Pyecharts的語法結構基于ECharts的語法結構,通過Python類庫的方式實現(xiàn)。使用Pyecharts可以方便地在Python中創(chuàng)建各種類型的圖表,并對其進行配置和定制。
二.繪制4個pyecharts圖形
pyecharts是一個基于Python語言的數(shù)據(jù)可視化庫,可以用來創(chuàng)建各種類型的圖形,如折線圖、柱狀圖、散點圖、餅圖、地圖等。它基于Echarts庫,通過Python語言提供了更簡單、更便捷的方式來創(chuàng)建圖形,無需編寫復雜的JavaScript代碼。使用pyecharts,用戶可以通過簡單的Python代碼來定義圖形的數(shù)據(jù)、樣式、布局等,然后生成HTML文件,從而實現(xiàn)圖形的展示和交互。通過pyecharts,用戶可以在Python環(huán)境下靈活、高效地進行數(shù)據(jù)可視化工作。
1.需要注意的問題
(1).繪制pyecharts圖形需要導入庫的相關類和函數(shù):在Python文件中導入pyecharts庫的相關類和函數(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庫,導入必要的包:
# 繪制一個散點圖
import pandas as pd
from pyecharts.charts import Scatter
from pyecharts import options as opts
?2.導入使用的數(shù)據(jù)集并準備需要的數(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對象,這是生成散點圖的基礎。
.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:設置散點的大小為12。
label_opts=opts.LabelOpts(is_show=False):設置標簽的選項,這里設置為不顯示標簽。
.set_global_opts(:設置全局的配置選項。
xaxis_opts=opts.AxisOpts(type_='value',):設置x軸的類型為數(shù)值型。
yaxis_opts=opts.AxisOpts(type_='value',):設置y軸的類型為數(shù)值型。
):結束.set_global_opts()方法的調用。
): 結束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)在來繪制一個餅圖,繪制過程不明白的可以參考上面散點圖的詳細描述!
(1)導入數(shù)據(jù)包與所使用的數(shù)據(jù)文件
(2)這一段代碼使用了數(shù)據(jù)分箱 (數(shù)據(jù)分桶)和分組統(tǒng)計?
- 使用
pd.cut
方法將df['年齡']
的數(shù)據(jù)分為四個年齡段:少年、青年、中年和老年。 - 2. 分箱的邊界是:0, 20, 40, 60, 100。
- 每個年齡段用相應的標簽標識。
- 使用
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ù)準備
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.雷達圖
(1)繪制雷達圖步驟:1.導入數(shù)據(jù)-2.定義數(shù)據(jù)標簽-3.設置全局配置項-4.添加數(shù)據(jù)標簽-5.設置圖例和標題-6.最后打印圖表
(2)創(chuàng)建雷達圖并設置全局配置項:
-
radar = Radar()
:創(chuàng)建一個新的雷達圖對象。 -
radar.add_schema(schema=[opts.RadarIndicatorItem(name=labels[i], max_=20) for i in range(len(labels))])
:為雷達圖添加指標和最大值。這里使用了一個列表推導式來為每個指標設置名稱和最大值。
(3)?添加數(shù)據(jù)和標簽:
- 使用一個循環(huán)來遍歷數(shù)據(jù)和標簽,并使用
radar.add()
方法將數(shù)據(jù)添加到雷達圖中。 -
labels[i]
是當前循環(huán)的指標名稱。 -
[x[i], y[i]]
是當前指標的數(shù)據(jù)。 -
color="pink"
設置線條顏色為粉紅色。 -
linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.9)
設置線條樣式,包括寬度和透明度。
# 雷達圖
from pyecharts import options as opts
from pyecharts.charts import Radar
# 定義數(shù)據(jù)和標簽
x = [[3, 6, 7, 8, 5, 9]]
y = [[6, 8, 2, 7, 3, 5]]
labels = ['年齡', '群眾', '團員', '女生', '男生', '老師']
# 創(chuàng)建雷達圖并設置全局配置項
radar = Radar()
radar.add_schema(schema=[opts.RadarIndicatorItem(name=labels[i], max_=20) for i in range(len(labels))])
# 添加數(shù)據(jù)和標簽
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))
# 設置圖例和標題
radar.set_global_opts(legend_opts=opts.LegendOpts(pos_left="center", pos_top="top"), title_opts=opts.TitleOpts(title="Radar Chart"))
# 渲染圖表
#radar.render("雷達圖.html")
radar.render_notebook()
圖片展示:?
5.?柱形圖代碼展示
(1)導入數(shù)據(jù)包,從Excel文件中讀取數(shù)據(jù),然后按照“工作地所在省份”進行分組并統(tǒng)計每個省份的會員卡號數(shù)量。最后,對結果進行降序排序并取前30名。
(2)進行數(shù)據(jù)準備:將result
的索引轉化為列表并賦值給x
,然后將索引和值都轉化為列表并分別賦值給y1
和y2
。
(3).reversal_axis()
是用來實現(xiàn)柱形圖的,即從大到小的順序顯示。最后,設置全局配置項,包括標題、標題鏈接和標題文本樣式。
#繪制柱形圖
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ù)準備
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', #標題鏈接
title_textstyle_opts = opts.TextStyleOpts( #文字樣本配置項
color = 'red',
font_size = 20,
)
)
)
)
y.render_notebook()
以下是展示結果圖片:
?三.制作大屏標題?
1.代碼解釋
1.這段代碼是使用pyecharts
庫來創(chuàng)建一個標題為“大屏標題”的餅圖,并設置了一些全局選項。
2.使用datetime.now()
獲取當前時間,然后使用strftime('%Y-%m-%d')
格式化為'年-月-日'的格式,并賦值給now_time
變量。
3.使用render_notebook()
方法將圖表渲染到Jupyter Notebook中。這樣,當在Jupyter環(huán)境中運行這段代碼時,我們會看到一個顯示“大屏標題”和“截至:當前時間”的空白區(qū)域,這是構成大屏的標題部分。
from pyecharts.charts import Pie
from datetime import datetime
now_time = datetime.now().strftime('%Y-%m-%d') # 獲取當前時間
big_title = (
Pie() # 不畫圖,只顯示一個標題,用來構成大屏的標題
.set_global_opts(
title_opts=opts.TitleOpts(title="大屏標題",
title_textstyle_opts=opts.TextStyleOpts(font_size=40,
# color='#FFFFFF',
),
subtitle = f'截至:{now_time}',
pos_top=10
)
)
)
big_title.render_notebook()
?1.圖表結果展示
2.使用pyecharts
庫創(chuàng)建Page
對象
使用pyecharts
庫來創(chuàng)建一個Page
對象,該對象可以用來組合多個圖表并展示在一個頁面上。
(1)添加圖表到Page對象:使用add
方法將多個圖表添加到Page
對象中。這些圖表可以是上面已經創(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中可以調整各個圖形的位置和大小,按“Save Config”鍵保存配置chart_config.json(有的電腦不成功)。
?在運行這個代碼后可能會出現(xiàn)?no test named ' false ' 的報錯:
解決方法有兩種:在anac
3.使用Python的BeautifulSoup庫來讀取和修改一個HTML文件
從bs4
模塊導入BeautifulSoup
類,這是一個用于解析HTML和XML文檔的庫。
from bs4 import BeautifulSoup
?with open語句打開名為"tp.html"的文件,并設置模式為"r+"(讀寫模式),同時指定編碼為'utf-8',使用BeautifulSoup
類解析HTML文件內容,并將解析后的對象賦值給html_bf
。?
with open("tp.html", "r+", encoding='utf-8') as html:
html_bf = BeautifulSoup(html, 'lxml')
- 使用BeautifulSoup的
select
方法來選擇所有帶有類名"chart-container"的<div>
標簽。這些標簽被存儲在divs
變量中。 - 下面的五行代碼都是為
divs
列表中的每個元素(即每個帶有"chart-container"類的<div>
標簽)設置樣式屬性
divs = html_bf.select('.chart-container') # 根據(jù)css定位標簽,選中圖像的父節(jié)點標簽
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ù)標簽名稱定位到body標簽
body["style"] = "background-color:p;" # 修改背景顏色
html_new = str(html_bf) # 將BeautifulSoup對象轉換為字符
html.seek(0, 0) # 光標移動至
html.truncate() # 刪除光標后的所有字符內容
html.write(html_new) # 將由BeautifulSoup對象轉換得到的字符重新寫入html文件
html.close()
以上代碼的運行結果展示如圖:
?
總結:這段代碼的主要目的是讀取一個HTML文件,并使用BeautifulSoup庫修改其中特定元素的樣式,然后重新寫入修改后的內容
大總結
使用pyecharts進行數(shù)據(jù)可視化是一種非常有效的方式,它能夠將復雜的數(shù)據(jù)轉化為直觀的圖表,幫助我們更好地理解和分析數(shù)據(jù)。這是我對pyecharts進行數(shù)據(jù)可視化的一些心得體會和總結:簡潔易用:pyecharts的API設計非常簡潔,使用起來非常方便。交互性強:pyecharts支持圖表之間的交互,比如可以通過鼠標懸停在某個數(shù)據(jù)點上,顯示更多的信息。可擴展性強:pyecharts支持自定義主題,我們可以根據(jù)需要調整圖表的樣式。同時,它也支持與其他Python庫的集成,比如使用pandas進行數(shù)據(jù)處理,使用matplotlib進行數(shù)據(jù)預處理等。
在使用pyecharts進行數(shù)據(jù)可視化的過程中,我也遇到了一些問題。比如,對于一些復雜的圖表類型,可能需要花費更多的時間來學習和理解。另外,雖然pyecharts的性能很好,但是如果需要生成大量的圖表或者需要實時渲染的場景,可能需要考慮其他的解決方案。文章來源:http://www.zghlxwxcb.cn/news/detail-852856.html
總的來說,使用pyecharts進行數(shù)據(jù)可視化是一種非常有效的方式。它簡潔易用,交互性強,可擴展性強,性能良好,社區(qū)活躍。在未來的工作中,我會繼續(xù)使用pyecharts進行數(shù)據(jù)可視化,也會向社區(qū)貢獻自己的力量。文章來源地址http://www.zghlxwxcb.cn/news/detail-852856.html
到了這里,關于在Python中使用pyecharts圖形畫可視化大屏的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!