據變化柱狀圖
大家看到這個圖有沒有熟悉感,頭條視頻有時候推薦這樣的視頻,有沒有想到這是怎么制作出來的了,對,這就是技術大神Jannchie的作品,使用的是D3.js,然后再加上錄屏工具就可以看到了(百度echarts版本明天出)。
一.技術點
1.需要準備好數據
類似這樣就行,數據庫也行
2.將數據放在visual.js中就可以了。(項目文件在下面下載哦)
二、解析
1.這其實是用D3畫的柱狀圖,有興趣的朋友可以了解一下。
2.作者在js中添加了眾多注釋,讓你只需要填寫數據就行,前端頁面不需要擔心。
3.原項目支持上傳數據,我直接寫好了可以需要使用。
三、地址
pyecharts 是一個用于生成 ECharts 圖表的類庫,可以方便地在 Python 中進行數據可視化。ECharts 是一種使用 JavaScript 實現的,功能豐富的圖表庫。通過 pyecharts,我們可以在 Python 中創建各種類型的圖表,包括折線圖、柱狀圖、餅圖、散點圖等。使用pyecharts進行可視化大屏的優點有很多,比如:
豐富的圖表類型:pyecharts支持多種類型的圖表,可以滿足不同的數據可視化需求。
高效的性能:pyecharts的性能非常好,可以快速生成大量的圖表。
易用性:pyecharts的API設計簡潔易用,可以快速上手。
可擴展性:pyecharts支持自定義主題和與其他Python庫的集成,方便用戶擴展功能。
Pyecharts的語法結構包括以下部分:
總之,Pyecharts的語法結構基于ECharts的語法結構,通過Python類庫的方式實現。使用Pyecharts可以方便地在Python中創建各種類型的圖表,并對其進行配置和定制。
pyecharts是一個基于Python語言的數據可視化庫,可以用來創建各種類型的圖形,如折線圖、柱狀圖、散點圖、餅圖、地圖等。它基于Echarts庫,通過Python語言提供了更簡單、更便捷的方式來創建圖形,無需編寫復雜的JavaScript代碼。使用pyecharts,用戶可以通過簡單的Python代碼來定義圖形的數據、樣式、布局等,然后生成HTML文件,從而實現圖形的展示和交互。通過pyecharts,用戶可以在Python環境下靈活、高效地進行數據可視化工作。
(1).繪制pyecharts圖形需要導入庫的相關類和函數:在Python文件中導入pyecharts庫的相關類和函數:
import pandas as pd
from pyecharts.charts import Scatter
from pyecharts import options as opts
(2).安裝pyecharts庫:通過pip安裝pyecharts庫,可以使用以下命令進行安裝:
pip install pyecharts
1.安裝pyecharts庫,導入必要的包:
# 繪制一個散點圖
import pandas as pd
from pyecharts.charts import Scatter
from pyecharts import options as opts
2.導入使用的數據集并準備需要的數據并繪制散點圖
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():創建一個新的Scatter對象,這是生成散點圖的基礎。
.add_xaxis(xaxis_data=x):為散點圖添加x軸的數據。其中,x是一個包含x軸數據的列表或數組。
.add_yaxis('', y_axis=y, symbol_size=12, label_opts=opts.LabelOpts(is_show=False)):
'':y軸的名稱(這里為空字符串,表示不顯示名稱)。
y_axis=y:為散點圖添加y軸的數據。其中,y是一個包含y軸數據的列表或數組。
symbol_size=12:設置散點的大小為12。
label_opts=opts.LabelOpts(is_show=False):設置標簽的選項,這里設置為不顯示標簽。
.set_global_opts(:設置全局的配置選項。
xaxis_opts=opts.AxisOpts(type_='value',):設置x軸的類型為數值型。
yaxis_opts=opts.AxisOpts(type_='value',):設置y軸的類型為數值型。
):結束.set_global_opts()方法的調用。
): 結束Scatter()對象的創建。
scatter.render_notebook():在Jupyter Notebook中渲染這個散點圖。如果在一個Jupyter環境中運行這段代碼,能看到一個在Notebook中顯示的散點圖。
scatter.render('散點圖.html'):這是一個注釋行,可以使用scatter.render('散點圖.html')將散點圖渲染到一個名為"散點圖.html"的HTML文件中。
以下是在jupyter中運行上面的代碼所得到的散點圖:
根據以上繪制散點圖的具體描述,我們現在來繪制一個餅圖,繪制過程不明白的可以參考上面散點圖的詳細描述!
(1)導入數據包與所使用的數據文件
(2)這一段代碼使用了數據分箱 (數據分桶)和分組統計
# 數據分箱
df['年齡段']=pd.cut(
df['年齡'],
bins=[0,20,40,60,100],
labels=['少年','青年','中年','老年']
)
# 分組統計
result=df.groupby('年齡段').size()
#數據準備
data=[[x,int(y)] for x,y in zip(result.index,result.values)]
pie=(
Pie()
.add(
'',#數據的系列名稱,如果只有一個系列的數據,填空字符
data,
radius=['30%','75%'], #橫向 左右
center=['25%','50%'], #上下
rosetype='radius'
)
)
pie.render_notebook()
以下是圖形運行展示:
(1)繪制雷達圖步驟:1.導入數據-2.定義數據標簽-3.設置全局配置項-4.添加數據標簽-5.設置圖例和標題-6.最后打印圖表
(2)創建雷達圖并設置全局配置項:
(3) 添加數據和標簽:
# 雷達圖
from pyecharts import options as opts
from pyecharts.charts import Radar
# 定義數據和標簽
x=[[3, 6, 7, 8, 5, 9]]
y=[[6, 8, 2, 7, 3, 5]]
labels=['年齡', '群眾', '團員', '女生', '男生', '老師']
# 創建雷達圖并設置全局配置項
radar=Radar()
radar.add_schema(schema=[opts.RadarIndicatorItem(name=labels[i], max_=20) for i in range(len(labels))])
# 添加數據和標簽
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()
圖片展示:
(1)導入數據包,從Excel文件中讀取數據,然后按照“工作地所在省份”進行分組并統計每個省份的會員卡號數量。最后,對結果進行降序排序并取前30名。
(2)進行數據準備:將result的索引轉化為列表并賦值給x,然后將索引和值都轉化為列表并分別賦值給y1和y2。
(3).reversal_axis()是用來實現柱形圖的,即從大到小的順序顯示。最后,設置全局配置項,包括標題、標題鏈接和標題文本樣式。
#繪制柱形圖
from pyecharts.charts import Bar
df1=pd.read_excel('數據集/航空公司數據.xlsx')
result=df1.groupby('工作地所在省份')['會員卡號'].count().sort_values(ascending=False)[:30]
#數據準備
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('人數',y1,stack=100) #stack 表示堆積效果,兩個stack參數值要相等
.add_yaxis('省份',y2,stack=100)
.reversal_axis() #實現條形圖效果
.set_global_opts(
title_opts=opts.TitleOpts(
title="各省份用戶人數柱形圖(前30名)",
title_link='https://www.baidu.com', #標題鏈接
title_textstyle_opts=opts.TextStyleOpts( #文字樣本配置項
color='red',
font_size=20,
)
)
)
)
y.render_notebook()
以下是展示結果圖片:
1.這段代碼是使用pyecharts庫來創建一個標題為“大屏標題”的餅圖,并設置了一些全局選項。
2.使用datetime.now()獲取當前時間,然后使用strftime('%Y-%m-%d')格式化為'年-月-日'的格式,并賦值給now_time變量。
3.使用render_notebook()方法將圖表渲染到Jupyter Notebook中。這樣,當在Jupyter環境中運行這段代碼時,我們會看到一個顯示“大屏標題”和“截至:當前時間”的空白區域,這是構成大屏的標題部分。
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.圖表結果展示
使用pyecharts庫來創建一個Page對象,該對象可以用來組合多個圖表并展示在一個頁面上。
(1)添加圖表到Page對象:使用add方法將多個圖表添加到Page對象中。這些圖表可以是上面已經創建好的,如big_title, scatter, pie, radar, 和 y 這樣,這些圖表將會被組合到一個頁面上展示啦。
from pyecharts.charts import Page
page=Page() # 創建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(有的電腦不成功)。
在運行這個代碼后可能會出現 no test named ' false ' 的報錯:
解決方法有兩種:在anac
從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')
divs=html_bf.select('.chart-container') # 根據css定位標簽,選中圖像的父節點標簽
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") # 根據標簽名稱定位到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進行數據可視化是一種非常有效的方式,它能夠將復雜的數據轉化為直觀的圖表,幫助我們更好地理解和分析數據。這是我對pyecharts進行數據可視化的一些心得體會和總結:簡潔易用:pyecharts的API設計非常簡潔,使用起來非常方便。交互性強:pyecharts支持圖表之間的交互,比如可以通過鼠標懸停在某個數據點上,顯示更多的信息。可擴展性強:pyecharts支持自定義主題,我們可以根據需要調整圖表的樣式。同時,它也支持與其他Python庫的集成,比如使用pandas進行數據處理,使用matplotlib進行數據預處理等。
在使用pyecharts進行數據可視化的過程中,我也遇到了一些問題。比如,對于一些復雜的圖表類型,可能需要花費更多的時間來學習和理解。另外,雖然pyecharts的性能很好,但是如果需要生成大量的圖表或者需要實時渲染的場景,可能需要考慮其他的解決方案。
總的來說,使用pyecharts進行數據可視化是一種非常有效的方式。它簡潔易用,交互性強,可擴展性強,性能良好,社區活躍。在未來的工作中,我會繼續使用pyecharts進行數據可視化,也會向社區貢獻自己的力量。
到此這篇關于在Python中使用pyecharts圖形畫可視化大屏的文章就介紹到這了。
#IT#
Pyecharts是一個將Echarts與Python結合的數據可視化庫。而Echarts本身是由百度開源的一個基于JavaScript的數據可視化庫,它以良好的交互性和精巧的圖表設計而受到開發者的認可。Python是一門非常適合數據處理的編程語言,具有強大的表達力和豐富的數據處理工具。
Pyecharts就是這兩者的結合,它允許Python開發者利用Echarts的強大功能來創建各種數據可視化圖表。使用pyecharts可以生成獨立的網頁文件,也可以集成到Web框架如Flask或Django中使用。
在pyecharts中,一切的配置都是通過Options來實現的。這意味著用戶可以通過配置不同的選項來定制化自己的圖表,從而創造出更加豐富和符合需求的可視化效果。
首先,簡潔的API設計是Pyecharts的一個顯著特點。它提供了簡單直觀的接口,使得用戶能夠輕松地創建復雜的圖表。這種設計哲學不僅降低了學習成本,還提高了開發效率,支持鏈式調用,讓代碼更加流暢易讀。
其次,豐富的圖表類型也是Pyecharts的一大特色。它包含了30多種常見的圖表類型,如折線圖、柱狀圖、餅圖等,幾乎涵蓋了所有主流的數據可視化需求。
再者,對Web框架的良好集成是Pyecharts的另一個優勢。它可以無縫集成到Flask、Django等主流的Web框架中,這使得在Web應用中集成數據可視化變得非常方便。
此外,原生百度地圖的支持為地理數據可視化提供了極大的便利。用戶可以輕松地在地圖上繪制各種地理信息,這對于需要展示地理位置數據的應用場景非常有用。
最后,Pyecharts支持主流的Notebook環境,包括Jupyter Notebook和JupyterLab,這使得數據分析和可視化可以在同一個環境中進行,極大地提高了工作效率。
安裝命令
pip install pandas
pip install pyecharts
查看已安裝版本:
import pyecharts
print(pyecharts.__version__)
import pandas as pd
from pyecharts.charts import Bar, Pie
from pyecharts import options as opts
# 讀取Excel文件
file_path='企業員工信息表.xlsx'
df=pd.read_excel(file_path)
# 統計各部門人數
department_count=df['部門'].value_counts()
# 繪制柱狀圖
bar=(
Bar()
.add_xaxis(department_count.index.tolist())
.add_yaxis("人數", department_count.values.tolist())
.set_global_opts(title_opts=opts.TitleOpts(title="各部門人數統計"))
)
# 生成HTML文件
bar.render('A06-各部門人數統計.html')
結果展示:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。