
- Plotly 教程
- Plotly - 首頁
- Plotly - 簡介
- Plotly - 環境設定
- Plotly - 線上和離線繪圖
- 在 Jupyter Notebook 中內聯繪圖
- Plotly - 包結構
- Plotly - 匯出為靜態影像
- Plotly - 圖例
- Plotly - 格式化軸和刻度
- Plotly - 子圖和嵌入圖
- Plotly - 條形圖和餅圖
- Plotly - 散點圖、Scattergl 圖和氣泡圖
- Plotly - 點圖和表格
- Plotly - 直方圖
- Plotly - 箱線圖、小提琴圖和等高線圖
- Plotly - Distplots、密度圖和誤差條形圖
- Plotly - 熱圖
- Plotly - 極座標圖和雷達圖
- Plotly - OHLC 圖、瀑布圖和漏斗圖
- Plotly - 3D 散點圖和曲面圖
- Plotly - 新增按鈕/下拉選單
- Plotly - 滑塊控制元件
- Plotly - FigureWidget 類
- Plotly 與 Pandas 和 Cufflinks
- Plotly 與 Matplotlib 和 Chart Studio
- Plotly 有用資源
- Plotly - 快速指南
- Plotly - 有用資源
- Plotly - 討論
Plotly - 條形圖和餅圖
在本章中,我們將學習如何藉助 Plotly 建立條形圖和餅圖。讓我們首先了解條形圖。
條形圖
條形圖使用矩形條表示分類資料,條形的高度或長度與其表示的值成正比。條形圖可以垂直或水平顯示。它有助於顯示離散類別之間的比較。圖表的一個軸顯示要比較的特定類別,另一個軸表示測量的值。
以下示例繪製了一個簡單的**條形圖**,顯示了不同課程的學生註冊人數。**go.Bar()** 函式返回一個條形軌跡,其 x 座標設定為科目列表,y 座標設定為學生人數。
import plotly.graph_objs as go langs = ['C', 'C++', 'Java', 'Python', 'PHP'] students = [23,17,35,29,12] data = [go.Bar( x = langs, y = students )] fig = go.Figure(data=data) iplot(fig)
輸出結果如下所示:

要顯示分組條形圖,必須將 Layout 物件的**barmode** 屬性設定為**group**。在以下程式碼中,表示每一年學生人數的多個軌跡相對於科目繪製,並顯示為分組條形圖。
branches = ['CSE', 'Mech', 'Electronics'] fy = [23,17,35] sy = [20, 23, 30] ty = [30,20,15] trace1 = go.Bar( x = branches, y = fy, name = 'FY' ) trace2 = go.Bar( x = branches, y = sy, name = 'SY' ) trace3 = go.Bar( x = branches, y = ty, name = 'TY' ) data = [trace1, trace2, trace3] layout = go.Layout(barmode = 'group') fig = go.Figure(data = data, layout = layout) iplot(fig)
其輸出結果如下所示:

**barmode** 屬性決定了在圖形上如何顯示位於相同位置座標處的條形。定義的值為“stack”(條形堆疊在一起),“relative”(條形堆疊在一起,負值位於軸下方,正值位於軸上方),“**group**”(條形並排繪製)。
透過將 barmode 屬性更改為“**stack**”,繪製的圖形如下所示:

餅圖
餅圖僅顯示一個數據系列。**餅圖**顯示一個數據系列中專案的尺寸(稱為**扇形**),與專案的總和成正比。資料點顯示為整個餅圖的百分比。
**graph_objs** 模組中的**pie()** 函式 - **go.Pie()**,返回一個餅圖軌跡。兩個必需的引數是**labels** 和**values**。讓我們繪製一個簡單的語言課程與學生人數的餅圖,如以下示例所示。
import plotly plotly.tools.set_credentials_file( username = 'lathkar', api_key = 'U7vgRe1hqmRp4ZNf4PTN' ) from plotly.offline import iplot, init_notebook_mode init_notebook_mode(connected = True) import plotly.graph_objs as go langs = ['C', 'C++', 'Java', 'Python', 'PHP'] students = [23,17,35,29,12] trace = go.Pie(labels = langs, values = students) data = [trace] fig = go.Figure(data = data) iplot(fig)
以下輸出顯示在 Jupyter Notebook 中:

**環形圖**是一種餅圖,中間有一個圓形孔,使其看起來像甜甜圈。在以下示例中,兩個環形圖以 1X2 網格佈局顯示。雖然兩個餅圖軌跡的“**label**”佈局相同,但每個子圖的行和列目標由 domain 屬性決定。
為此,我們使用 2019 年議會選舉中各政黨席位和得票率的資料。在 Jupyter Notebook 單元格中輸入以下程式碼:
parties = ['BJP', 'CONGRESS', 'DMK', 'TMC', 'YSRC', 'SS', 'JDU','BJD', 'BSP','OTH'] seats = [303,52,23,22,22,18,16,12,10, 65] percent = [37.36, 19.49, 2.26, 4.07, 2.53, 2.10, 1.46, 1.66, 3.63, 25.44] import plotly.graph_objs as go data1 = { "values": seats, "labels": parties, "domain": {"column": 0}, "name": "seats", "hoverinfo":"label+percent+name", "hole": .4, "type": "pie" } data2 = { "values": percent, "labels": parties, "domain": {"column": 1}, "name": "vote share", "hoverinfo":"label+percent+name", "hole": .4, "type": "pie" } data = [data1,data2] layout = go.Layout( { "title":"Parliamentary Election 2019", "grid": {"rows": 1, "columns": 2}, "annotations": [ { "font": { "size": 20 }, "showarrow": False, "text": "seats", "x": 0.20, "y": 0.5 }, { "font": { "size": 20 }, "showarrow": False, "text": "votes", "x": 0.8, "y": 0.5 } ] } ) fig = go.Figure(data = data, layout = layout) iplot(fig)
其輸出結果如下所示:
