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

對比Excel,用Python繪制柱狀圖時添加Table數據表

開發 后端
最近在做數據可視化的時候,希望在圖上同時顯示數據表。關于這個需求,用excel可以比較方便,直接快速布局中選擇布局5即可。那么,如果我們想用python也來完成這項任務,可以怎么做呢?

 [[408584]]

本文轉載自微信公眾號「可以叫我才哥」,作者才哥。轉載本文請聯系可以叫我才哥公眾號。

大家好,我是才哥。

最近在做數據可視化的時候,希望在圖上同時顯示數據表。關于這個需求,用excel可以比較方便,直接快速布局中選擇布局5即可。那么,如果我們想用python也來完成這項任務,可以怎么做呢?

期望效果預覽:

excel作圖效果

1. Excel簡單繪制

就很簡單了,直接選中數據插入柱狀圖,然后在圖表工具-設計-快速布局中選擇相應的布局即可。

案例數據及效果

excel圖表設計->快速布局—>布局5

2. Python繪制

那這里我們用到的是matplotlib,bar和table。

將圖表元素進行拆解,可以分為柱狀圖和數據表,剛好matplotlib提供了對應的接口。

2.1 柱狀圖繪制

先繪制柱狀圖,案例中是兩組數據,所以是組合柱狀圖。在本次繪制中,有以下幾個知識點,可以記一記:

  • 設置標題時的位置(用參數x,y指定)
  • 設置坐標軸標題時用參數rotation旋轉方向
  • 設置坐標軸區間范圍
  • 顯示數據標簽(用ax.bar_label方法)
  1. import numpy as np 
  2. import matplotlib.pyplot as plt 
  3.  
  4. # 中文及負數顯示 
  5. plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'
  6. plt.rcParams['axes.unicode_minus'] = False 
  7.  
  8. # 創建畫布 
  9. fig, ax = plt.subplots(figsize=(10, 4), dpi=100) 
  10.  
  11. # 案例數據 
  12. data = [[150, 200,  -50, -100,  -75], 
  13.         [300, 125,  -80,  75, -100], 
  14.         ] 
  15. # 列與行 
  16. columns = ('周一''周二''周三''周四''周五'
  17. rows = ['才哥''楠楠'
  18.  
  19. # 作圖參數 
  20. index = np.arange(len(columns))-0.1 
  21. bar_width = 0.4 
  22.  
  23. # 設置柱狀圖顏色 
  24. colors = ['turquoise''coral'
  25.  
  26. # 柱狀圖 
  27. bar1 = plt.bar(index, data[0],  
  28.                bar_width, color=colors[0], edgecolor='grey'
  29. bar2 = plt.bar(index+bar_width, data[1], 
  30.                bar_width, color=colors[1], edgecolor='grey'
  31.  
  32. # 設置標題 
  33. ax.set_title('工作日收益情況', fontsize=16, y=1.1,x=0.44) 
  34. # 設置坐標軸標題 
  35. ax.set_ylabel("元", fontsize=12, color='black', alpha=0.7, rotation=360) 
  36. # 設置Y軸區間 
  37. ax.set_ylim(-150, 350) 
  38.  
  39. # 顯示數據標簽 
  40. ax.bar_label(bar1, label_type='edge'
  41. ax.bar_label(bar2, label_type='edge'
  42.  
  43. # x,y軸刻度不顯示 
  44. ax.tick_params(axis=u'both', which=u'both', length=0) 
  45. # x軸刻度及刻度值不顯示 
  46. plt.xticks([]) 

輸出如下:

組合柱狀圖

2.2. 圖表table繪制

先看看圖表table的繪制,我們拿案例數據來單獨繪制看看:

  1. # 創建畫布 
  2. fig, ax = plt.subplots(figsize=(10, 4), dpi=100) 
  3. table圖表 
  4. the_table = plt.table(cellText=data,  
  5.                       rowLabels=rows,rowColours=colors, 
  6.                       colLabels=columns, cellLoc='center', loc="bottom"
  7.                       bbox=[0, -0.4, 1, 0.24] 
  8.                       ) 

輸出如下:

table

關于 plt.table的參數介紹如下:

cellText:表格單元格文本,字符串中的換行符暫不支持,可能導致文本超出單元格邊界

cellColours:表格單元格背景色

cellLoc:表格單元格文本的對齊方式,取值范圍為{'left', 'center', 'right'},默認值為'right'

colWidths:表格單元格寬度

rowLabels:表格行表頭文本

rowColours:表格行表頭背景色

rowLoc:表格行表頭文本的對齊方式,取值范圍為{'full', 'left', 'right'},默認值為'left'

colLabels:表格列表頭文本

colColours:表格列表頭背景色

colLoc:表格列表頭文本的對齊方式,取值范圍為{'full', 'left', 'right'},默認值為'left'

loc:單元格相對于子圖的位置

bbox:繪制表格的邊界框

最后,我們需要做的就是將上述兩個圖進行組合,組合過程中可能需要做一些格式微調。

2.3. 組合

在本次案例中,對組合圖需求有以下幾點:

  • 柱狀圖邊框不顯示
  • 圖表table中列名高度需要高一些,單元格的高度要低一些
  • 圖例位置需要和對應行一致

為了實現上訴需求,我們可以通過以下方式來處理:

  1. # 設置單元格高度 
  2. cellDict = the_table.get_celld() 
  3. for i in range(0, len(columns)): 
  4.     cellDict[(0, i)].set_height(0.6) 
  5.     for j in range(1, len(rows)+1): 
  6.         cellDict[(j, i)].set_height(0.4) 
  7.  
  8. # 設置圖表table中行名單元格的高度 
  9. cellDict[(1, -1)].set_height(0.4) 
  10. cellDict[(2, -1)].set_height(0.4) 
  11.  
  12. # 設置圖表table單元格文本字體 
  13. the_table.auto_set_font_size(False
  14. the_table.set_fontsize(10) 
  15.  
  16. # 設置圖表table單元格邊框 
  17. for key, cell in the_table.get_celld().items(): 
  18.     cell.set_linewidth(0.6) 
  19.  
  20. # 邊框隱藏 
  21. ax.spines['top'].set_visible(False
  22. ax.spines['right'].set_visible(False
  23. ax.spines['bottom'].set_visible(False
  24. ax.spines['left'].set_visible(False
  25.  
  26. name = [''''
  27. # 設置圖例的位置 
  28. ax.legend(name, handlelength=0.7, labelspacing=0.6, 
  29.           bbox_to_anchor=(-0.1, -0.23), 
  30.           loc='upper left', frameon=False

最終,我們可以得到比較滿意的效果:

最終效果

以上就是本次全部內容,大家可以修改參數多試試以熟悉掌握。

 

責任編輯:武曉燕 來源: 可以叫我才哥
相關推薦

2021-01-06 10:05:09

鴻蒙HarmonyOSCanvas

2011-12-21 12:58:41

JavaJFreeChart

2021-01-21 09:10:29

ECharts柱狀圖大數據

2023-05-11 08:00:00

JavaScript柱狀圖

2021-02-24 11:23:22

Pyecharts可視化工具柱狀圖

2022-06-14 15:13:22

Echarts柱狀圖

2025-02-08 10:44:46

2011-03-15 09:15:06

MyisamchkMySQL

2020-04-25 20:11:23

Python熱力圖代碼

2023-03-06 08:03:10

Python可視化工具

2022-05-23 10:53:54

canvas柱狀圖鴻蒙

2010-06-09 18:56:44

UML用例圖

2015-07-22 10:57:36

watchOS圖表自定義

2009-11-13 14:46:21

ADO.NET Dat

2009-09-07 16:13:14

LINQ to SQL

2010-11-22 13:53:46

MySQL數據表

2024-07-16 16:20:19

Python數據集

2023-11-06 10:04:51

Go語言大數據

2009-09-09 11:24:13

Linq使用數據表

2010-03-01 16:41:04

WCF數據表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美成人一区二区 | 日韩国产精品一区二区三区 | 欧美亚洲国产日韩 | 日韩视频在线免费观看 | 黄色一级免费观看 | 91 在线 | 91极品尤物在线播放国产 | 91在线第一页 | 欧美日韩精品一区二区三区蜜桃 | 精品中文字幕一区二区 | 欧美日韩久久精品 | 国产91在线精品 | 日本不卡一区二区三区 | 国产欧美日韩综合精品一 | 久草网站 | 蜜桃视频在线观看免费视频网站www | 青青青伊人 | 欧美精品网站 | 全免费a级毛片免费看视频免 | 精品乱人伦一区二区三区 | 欧美日韩一区在线 | 国产欧美一区二区三区在线看 | 高清视频一区二区三区 | 人人射人人插 | 特级特黄特色的免费大片 | 手机av在线 | 91色在线视频 | 国产精品一区二区在线 | 亚洲精品久 | 久久综合色综合 | 成人国产精品一级毛片视频毛片 | 夜夜爽99久久国产综合精品女不卡 | h视频免费在线观看 | 天天躁天天操 | 久久久久久av | 欧美成人免费电影 | 99re在线 | 欧美日日日日bbbbb视频 | 91精品一区| 日本成年免费网站 | 网站国产 |