首页
/
每日頭條
/
生活
/
用plot3繪制空間曲線
用plot3繪制空間曲線
更新时间:2025-09-16 10:45:48

作者:俊欣

來源:關于數據分析與可視化

說到Python當中的可視化模塊,相信大家用的比較多的還是matplotlib、seaborn等模塊,今天小編來嘗試用Plotly模塊為大家繪制可視化圖表,和前兩者相比,用Plotly模塊會指出來的可視化圖表有着很強的交互性。

柱狀圖

我們先導入後面需要用到的模塊并且生成一批假數據,

import numpy as np import plotly.graph_objects as go # create dummy data vals = np.ceil(100 * np.random.rand(5)).astype(int) keys = ["A", "B", "C", "D", "E"]

我們基于所生成的假數據來繪制柱狀圖,代碼如下

fig = go.Figure() fig.add_trace( go.Bar(x=keys, y=vals) ) fig.update_layout(height=600, width=600) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)1

可能讀者會感覺到繪制出來的圖表略顯簡單,我們再來完善一下,添加上标題和注解,代碼如下

# create figure fig = go.Figure() # 繪制圖表 fig.add_trace( go.Bar(x=keys, y=vals, hovertemplate="<b>Key:</b> %{x}<br><b>Value:</b> %{y}<extra></extra>") ) # 更新完善圖表 fig.update_layout( font_family="Averta", hoverlabel_font_family="Averta", title_text="直方圖", xaxis_title_text="X軸-鍵", xaxis_title_font_size=18, xaxis_tickfont_size=16, yaxis_title_text="Y軸-值", yaxis_title_font_size=18, yaxis_tickfont_size=16, hoverlabel_font_size=16, height=600, width=600 ) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)2

分組條形圖和堆積條形圖

例如我們有多組數據想要繪制成柱狀圖的話,我們先來創建好數據集

vals_2 = np.ceil(100 * np.random.rand(5)).astype(int) vals_3 = np.ceil(100 * np.random.rand(5)).astype(int) vals_array = [vals, vals_2, vals_3]

然後我們遍曆獲取列表中的數值并且繪制成條形圖,代碼如下

# 生成畫布 fig = go.Figure() # 繪制圖表 for i, vals in enumerate(vals_array): fig.add_trace( go.Bar(x=keys, y=vals, name=f"Group {i 1}", hovertemplate=f"<b>Group {i 1}</b><br><b>Key:</b> %{{x}}<br><b>Value:</b> %{{y}}<extra></extra>") ) # 完善圖表 fig.update_layout( barmode="group", ...... ) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)3

而我們想要變成堆積狀的條形圖,隻需要修改代碼中的一處即可,将fig.update_layout(barmode="group")修改成fig.update_layout(barmode="group")即可,我們來看一下出來的樣子

箱型圖

箱型圖在數據統計分析當中也是應用相當廣泛的,我們先來創建兩個假數據

# create dummy data for boxplots y1 = np.random.normal(size=1000) y2 = np.random.normal(size=1000)

我們将上面生成的數據繪制成箱型圖,代碼如下

# 生成畫布 fig = go.Figure() # 繪制圖表 fig.add_trace( go.Box(y=y1, name="Dataset 1"), ) fig.add_trace( go.Box(y=y2, name="Dataset 2"), ) fig.update_layout( ...... ) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)4

散點圖和氣泡圖

接下來我們嘗試來繪制一張散點圖,也是一樣的步驟,我們想嘗試生成一些假數據,代碼如下

x = [i for i in range(1, 10)] y = np.ceil(1000 * np.random.rand(10)).astype(int)

然後我們來繪制散點圖,調用的是Scatter()方法,代碼如下

# create figure fig = go.Figure() fig.add_trace( go.Scatter(x=x, y=y, mode="markers", hovertemplate="<b>x:</b> %{x}<br><b>y:</b> %{y}<extra></extra>") ) fig.update_layout( ....... ) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)5

那麼氣泡圖的話就是在散點圖的基礎上,根據數值的大小來設定散點的大小,我們再來創建一些假數據用來設定散點的大小,代碼如下

s = np.ceil(30 * np.random.rand(5)).astype(int)

我們将上面用作繪制散點圖的代碼稍作修改,通過marker_size參數來設定散點的大小,如下所示

fig = go.Figure() fig.add_trace( go.Scatter(x=x, y=y, mode="markers", marker_size=s, text=s, hovertemplate="<b>x:</b> %{x}<br><b>y:</b> %{y}<br><b>Size:</b> %{text}<extra></extra>") ) fig.update_layout( ...... ) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)6

直方圖

直方圖相比較于上面提到的幾種圖表,總體上來說會稍微有點醜,但是通過直方圖,讀者可以更加直觀地感受到數據的分布,我們先來創建一組假數據,代碼如下

## 創建假數據 data = np.random.normal(size=1000)

然後我們來繪制直方圖,調用的是Histogram()方法,代碼如下

# 創建畫布 fig = go.Figure() # 繪制圖表 fig.add_trace( go.Histogram(x=data, hovertemplate="<b>Bin Edges:</b> %{x}<br><b>Count:</b> %{y}<extra></extra>") ) fig.update_layout( height=600, width=600 ) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)7

我們再在上述圖表的基礎之上再進行進一步的格式優化,代碼如下

# 生成畫布 fig = go.Figure() # 繪制圖表 fig.add_trace( go.Histogram(x=data, histnorm="probability", hovertemplate="<b>Bin Edges:</b> %{x}<br><b>Count:</b> %{y}<extra></extra>") ) fig.update_layout( ...... ) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)8

多個子圖拼湊到一塊兒

相信大家都知道在matplotlib模塊當中的subplots()方法可以将多個子圖拼湊到一塊兒,那麼同樣地在plotly當中也可以同樣地将多個子圖拼湊到一塊兒,調用的是plotly模塊當中make_subplots函數

from plotly.subplots import make_subplots ## 2行2列的圖表 fig = make_subplots(rows=2, cols=2) ## 生成一批假數據用于圖表的繪制 x = [i for i in range(1, 11)] y = np.ceil(100 * np.random.rand(10)).astype(int) s = np.ceil(30 * np.random.rand(10)).astype(int) y1 = np.random.normal(size=5000) y2 = np.random.normal(size=5000)

接下來我們将所要繪制的圖表添加到add_trace()方法當中,代碼如下

# 繪制圖表 fig.add_trace( go.Bar(x=x, y=y, hovertemplate="<b>x:</b> %{x}<br><b>y:</b> %{y}<extra></extra>"), row=1, col=1 ) fig.add_trace( go.Histogram(x=y1, hovertemplate="<b>Bin Edges:</b> %{x}<br><b>Count:</b> %{y}<extra></extra>"), row=1, col=2 ) fig.add_trace( go.Scatter(x=x, y=y, mode="markers", marker_size=s, text=s, hovertemplate="<b>x:</b> %{x}<br><b>y:</b> %{y}<br><b>Size:</b> %{text}<extra></extra>"), row=2, col=1 ) fig.add_trace( go.Box(y=y1, name="Dataset 1"), row=2, col=2 ) fig.add_trace( go.Box(y=y2, name="Dataset 2"), row=2, col=2 ) fig.update_xaxes(title_font_size=18, tickfont_size=16) fig.update_yaxes(title_font_size=18, tickfont_size=16) fig.update_layout( ...... ) fig.show()

output

用plot3繪制空間曲線(用Plotly繪制了幾張精湛的圖表)9

CDA數據分析師分享案例,歡迎大家留言分享你的建議。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
衣服總變黃?恢複潔白亮麗有辦法!
衣服總變黃?恢複潔白亮麗有辦法!
衣服上我們經常會不小心滴到各種各樣的污漬,但是去除的方法卻不多,有時候一件很漂亮的衣服因為某快明顯的污漬而不得不束之高閣,小編為大家找了些除掉各種污漬的方法希望對大家有用。衣服總變黃?恢複潔白亮麗有辦法!衣服會變黃,多半是熒光劑變弱所緻,想要衣物恢複潔白亮麗,就得想法子。1、洗米水+橘子皮簡單又有效...
2025-09-16
打豆漿剩下黃豆渣的魔法變身
打豆漿剩下黃豆渣的魔法變身
随着養生風氣盛行,越來越多人喜愛在家中自制豆漿飲用。但熬煮後剩下的豆漿渣往往不知如何處理,直接食用沒有滋味,丢掉又覺得浪費!專家表示,不妨将黃豆渣回收再利用,加入日常菜肴中一同烹調食用,不僅有助增加飽足感,适度食用更有幫助減肥、通便的效果。打豆漿剩下黃豆渣的魔法變身黃豆渣高膳纖!增飽足、促排便日本知...
2025-09-16
客廳挂什麼畫好?客廳挂畫給予舒适的家一種風格
客廳挂什麼畫好?客廳挂畫給予舒适的家一種風格
在家裝過程中很多人都會遇到這樣的情形:“房子裝修好了,但是感覺牆壁有點空”大片的留白,的确讓人不知所措。其實很簡單,一幅合适的裝飾畫就能很好的化解尴尬。那麼客廳挂什麼畫好呢?客廳是一個家庭對外開放的窗口,是戶主與密友談天說地的“仙人島”,它能體現主人的...
2025-09-16
實木地闆養護法則 讓地闆在春季也容光煥發
實木地闆養護法則 讓地闆在春季也容光煥發
春季氣溫走高,室内溫度與濕度的變化随時都可能引發地闆、家具幹縮、開裂的現象。一些實木地闆養護法則能讓地闆在春季也容光煥發。下面就跟随作文庫知識百科了解一下吧!實木地闆的保養三法則一:地闆打蠟次數不宜頻繁春季天氣幹燥,尤其是目前室内仍有暖氣,輕易導緻居室内空氣更加幹燥,為了讓地闆“皮膚&r...
2025-09-16
讓廚房不再油膩膩!廚房清潔的技巧
讓廚房不再油膩膩!廚房清潔的技巧
讓廚房不再油膩膩!廚房清潔的技巧廚房清潔的技巧1、爐竈的清潔把檸檬或是橘子的皮,放入水中煮沸,待到水冷卻後用布蘸濕,就可以輕松擦洗煤氣爐、燃氣爐上的污垢。還可以用黏稠的米湯塗在爐竈上,待幹燥後,米湯結痂,會把油污粘在一起,隻要清潔米湯的結的痂就可以輕松去除污垢。2、抽油煙機的清潔說到廚房的清理,最恐...
2025-09-16
Copyright 2023-2025 - www.tftnews.com All Rights Reserved