成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個經(jīng)典案例掌握 Plotly 餅圖繪制技巧

大數(shù)據(jù) 數(shù)據(jù)可視化
當需要展示同一數(shù)據(jù)的不同維度比例,或比較不同數(shù)據(jù)集的構(gòu)成時,Plotly的子圖餅圖組合提供了一種強大而優(yōu)雅的解決方案。

Plotly庫以其卓越的交互性和定制能力,使得創(chuàng)建這種精美的多餅圖布局成為可能。本文將通過一個案例,展示如何利用 Plotly 繪制一組相互關(guān)聯(lián)、視覺效果的餅圖。

一、準備工作

開始創(chuàng)作前,請確保你的 Python 環(huán)境已安裝 Plotly 和 Pandas:

pip install plotly pandas

導入所需模塊:

import plotly.graph_objects as go
from plotly.subplots import make_subplots # 導入用于創(chuàng)建子圖的函數(shù)
import plotly.express as px
import pandas as pd

二、案例:網(wǎng)站流量來源與用戶設(shè)備類型分析

1. 場景

假設(shè)我們需要分析一個網(wǎng)站的流量構(gòu)成,我們關(guān)心兩個核心問題:

  • 用戶主要通過哪些來源(如搜索引擎、社交媒體、直接訪問等)訪問網(wǎng)站?
  • 訪問用戶主要使用哪些設(shè)備類型(如桌面電腦、移動設(shè)備、平板電腦)?

我們希望將這兩個不同視角的數(shù)據(jù)并排展示在同一張圖上,以便快速比較和理解用戶行為的全貌。

2. 數(shù)據(jù)準備

我們需要準備兩個獨立但相關(guān)的數(shù)據(jù)集:一個描述流量來源及其占比,另一個描述設(shè)備類型及其占比。

# 網(wǎng)站流量來源數(shù)據(jù) (模擬)
traffic_source_data = {
    'Source': ['搜索引擎', '社交媒體', '直接訪問', '推薦鏈接', '付費廣告'],
    'Visits': [55000, 25000, 15000, 8000, 7000]
}
df_source = pd.DataFrame(traffic_source_data)
df_source['Percentage'] = (df_source['Visits'] / df_source['Visits'].sum() * 100).round(1)

# 用戶設(shè)備類型數(shù)據(jù) (模擬)
device_type_data = {
    'Device': ['桌面電腦', '移動設(shè)備', '平板電腦'],
    'Users': [42000, 63000, 5000]
}
df_device = pd.DataFrame(device_type_data)
df_device['Percentage'] = (df_device['Users'] / df_device['Users'].sum() * 100).round(1)

print("--- 流量來源數(shù)據(jù) ---")
print(df_source)
print("\n--- 設(shè)備類型數(shù)據(jù) ---")
print(df_device)

我們創(chuàng)建了兩個獨立的 Pandas DataFrame,分別存儲流量來源和設(shè)備類型的數(shù)據(jù),并計算了各自的百分比,為繪制餅圖做好準備。

3. 繪制餅圖

我們將使用 make_subplots 創(chuàng)建一個包含兩個餅圖的布局,并對每個餅圖進行精細的視覺和交互設(shè)計。

# 確保已運行上方數(shù)據(jù)準備代碼

# 創(chuàng)建一個 1 行 2 列的子圖布局,指定類型為 'domain' 用于餅圖
fig = make_subplots(rows=1, cols=2,
                    specs=[[{'type':'domain'}, {'type':'domain'}]], # 定義子圖類型
                    subplot_titles=("流量來源分布", "用戶設(shè)備類型")) # 設(shè)置子圖標題

# --- 第一個餅圖:流量來源 ---
fig.add_trace(go.Pie(
    labels=df_source['Source'],
    values=df_source['Visits'],
    name='來源', # 用于圖例和懸停
    hole=0.5, # 甜甜圈效果
    marker=dict(
        colors=px.colors.sequential.Blues_r, # 使用 Plotly Express 的反轉(zhuǎn)藍色調(diào)色板
        line=dict(color='#ffffff', width=2)
    ),
    textinfo='percent', # 扇區(qū)內(nèi)顯示百分比
    insidetextorientatinotallow='radial',
    hovertemplate='<b>來源:</b> %{label}<br><b>訪問量:</b> %{value:,}<br><b>占比:</b> %{percent:.1%}<extra></extra>',
    pull=[0.1, 0, 0, 0, 0] # 突出顯示“搜索引擎”
), row=1, col=1) # 指定添加到第1行第1列

# --- 第二個餅圖:設(shè)備類型 ---
fig.add_trace(go.Pie(
    labels=df_device['Device'],
    values=df_device['Users'],
    name='設(shè)備',
    hole=0.5,
    marker=dict(
        colors=px.colors.sequential.Greens_r, # 使用 Plotly Express 的反轉(zhuǎn)綠色調(diào)色板
        line=dict(color='#ffffff', width=2)
    ),
    textinfo='percent',
    insidetextorientatinotallow='radial',
    hovertemplate='<b>設(shè)備:</b> %{label}<br><b>用戶數(shù):</b> %{value:,}<br><b>占比:</b> %{percent:.1%}<extra></extra>',
    pull=[0, 0.1, 0] # 突出顯示“移動設(shè)備”
), row=1, col=2) # 指定添加到第1行第2列

# --- 整體布局與美化 ---
fig.update_layout(
    title_text='網(wǎng)站流量分析:來源與設(shè)備概覽', # 主標題
    title_x=0.5, # 標題居中
    # 設(shè)置統(tǒng)一的字體和背景
    fnotallow=dict(family="Arial, sans-serif", size=12, color='#333'),
    paper_bgcolor='rgba(248, 248, 255, 1)', # 設(shè)置淡雅的背景色 (Ghost White)
    plot_bgcolor='rgba(0,0,0,0)', # 繪圖區(qū)域背景透明
    # 統(tǒng)一圖例樣式 (Plotly 會自動處理多個餅圖的圖例)
    legend=dict(
        orientatinotallow="h", yanchor="bottom", y=-0.1, xanchor="center", x=0.5
    ),
    # 在甜甜圈中心添加注釋顯示總數(shù) (可選,增加信息量)
    annotatinotallow=[
        dict(text=f'總訪問<br>{df_source["Visits"].sum():,}', x=0.18, y=0.5, font_size=16, showarrow=False),
        dict(text=f'總用戶<br>{df_device["Users"].sum():,}', x=0.82, y=0.5, font_size=16, showarrow=False)
    ],
    margin=dict(t=80, l=20, r=20, b=40) # 調(diào)整邊距給標題和圖例留出空間
)

# 顯示圖表
fig.show()

# # 或者保存為獨立的 HTML 文件
# fig.write_html("stunning_subplot_pie_charts.html")

三、總結(jié)

當需要展示同一數(shù)據(jù)的不同維度比例,或比較不同數(shù)據(jù)集的構(gòu)成時,Plotly的子圖餅圖組合提供了一種強大而優(yōu)雅的解決方案。通過 make_subplots 創(chuàng)建布局,為每個餅圖應用精美的樣式(如甜甜圈、顏色方案、描邊、注釋),并利用 Plotly 內(nèi)在的交互性,我們可以將多個簡單的比例圖提升為信息豐富、視覺驚艷的數(shù)據(jù)敘事工具。

責任編輯:趙寧寧 來源: Python數(shù)智工坊
相關(guān)推薦

2010-07-01 16:48:54

UML序列圖

2024-07-26 21:35:11

2021-12-29 08:21:01

Performance優(yōu)化案例工具

2011-03-31 11:15:52

網(wǎng)頁設(shè)計Web

2010-06-08 10:51:48

UML活動圖

2011-04-01 17:37:34

技巧

2021-01-28 07:38:29

C指針C語言應用程序

2020-04-30 09:17:28

數(shù)據(jù)分析電商分析思維

2025-04-01 08:30:00

Plotly數(shù)據(jù)可視化數(shù)據(jù)分析

2018-02-28 13:49:49

屏幕截取win 10瀏覽器

2010-09-16 15:57:00

PPPoA配置

2010-09-08 14:35:22

CSS

2023-04-11 07:48:32

WebGLCanvas

2022-04-20 20:30:36

可視化模塊Python

2013-09-25 10:28:42

諾基亞經(jīng)典

2024-09-09 18:18:45

2025-03-04 00:22:31

2023-02-07 10:40:30

gRPC系統(tǒng)Mac

2018-12-06 11:30:42

JavaScript前端編程語言

2018-10-25 14:47:53

分析消費數(shù)據(jù)挖掘
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩欧美操| 欧美日韩国产一区二区三区 | 亚洲精品二区 | 亚洲一区二区视频在线观看 | 天天夜夜操 | 成人影院免费视频 | 欧美激情久久久 | 亚洲在线一区 | 欧美精品久久久久 | 性一交一乱一伦视频免费观看 | 日韩一二区 | 天天玩天天操天天干 | 日韩精品二区 | 在线免费亚洲视频 | 密室大逃脱第六季大神版在线观看 | 欧美一区在线看 | 欧美小视频在线观看 | 久草视频在线播放 | 在线视频国产一区 | 亚洲精品自在在线观看 | 九九九久久国产免费 | 求个av网址| 综合五月婷 | 精品乱码一区二区三四区 | 国产你懂的在线观看 | 免费看91| 日韩精品影院 | 亚洲国产一区二区在线 | 国产欧美性成人精品午夜 | 美女视频黄的 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 日韩亚洲欧美一区 | 一区二区三区中文字幕 | 精品福利av导航 | 成人欧美一区二区三区在线观看 | 欧美伊人 | 99久久久99久久国产片鸭王 | 色综合中文 | 欧美成ee人免费视频 | 美日韩免费视频 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 |