偏差 (Deviation)
有序條形圖 (Ordered Bar Chart)
有序條形圖有效地傳達了項目的排名順序。 但是,在圖表上方添加度量標准的值,用戶可以從圖表本身獲取精確信息。
https://datawhalechina.github.io/pms50/#/chapter15/chapter15
導入所需要的庫
import numpy as np # 導入numpy庫 import pandas as pd # 導入pandas庫 import matplotlib as mpl # 導入matplotlib庫 import matplotlib.pyplot as plt import seaborn as sns # 導入seaborn庫
設定圖像各種屬性
large = 22; med = 16; small = 12 params = {'axes.titlesize': large, # 設置子圖上的標題字體 'legend.fontsize': med, # 設置圖例的字體 'figure.figsize': (16, 10), # 設置圖像的畫布 'axes.labelsize': med, # 設置標簽的字體 'xtick.labelsize': med, # 設置x軸上的標尺的字體 'ytick.labelsize': med, # 設置整個畫布的標題字體 'figure.titlesize': large} plt.rcParams.update(params) # 更新默認屬性 plt.style.use('seaborn-whitegrid') # 設定整體風格 sns.set_style("white") # 設定整體背景風格
程序代碼
# step1:導入數據 df_raw = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv") df = df_raw[['cty', 'manufacturer']].groupby('manufacturer').apply(lambda x:x.mean()) df.sort_values('cty', inplace = True) df.reset_index(inplace = True) # step2:繪制有序條形圖 # 創建畫布對象以及子圖對象 fig,ax = plt.subplots(figsize = (16, 10), # 畫布尺寸 facecolor = 'white', # 畫布顏色 dpi = 80) # 分辨率 # 繪制柱狀圖 ax.vlines(x = df.index, # 橫坐標 ymin = 0, # 柱狀圖在y軸的起點 ymax = df.cty, # 柱狀圖在y軸的終點 color = 'firebrick', # 柱狀圖的顏色 alpha = 0.7, # 柱狀圖的透明度 linewidth = 20) # 柱狀圖的線寬 # step3:添加文本 # enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標, for i, cty, in enumerate(df.cty): ax.text(i, # 文本的橫坐標位置 cty+0.5, # 文本的縱坐標位置 round(cty, 1), # 對文本中數據保留一位小數 horizontalalignment = 'center') # 相對於xy軸,水平對齊 # step4:裝飾 ax.set_title('Bar Chart for Highway Mileage', # 子圖標題名稱 fontdict = {'size': 22}) # 標題字體尺寸 ax.set(ylabel = 'Miles Per Gallon', # 縱坐標的標題名稱 ylim = (0,30)) # 縱坐標的取值范圍 # 橫坐標的刻度標尺 plt.xticks(df.index, # 橫坐標的刻度位置 df.manufacturer.str.upper(), # 刻度標尺的內容(先轉化為字符串,再轉換為大寫) rotation = 60, # 旋轉角度 horizontalalignment = 'right', # 相對於刻度標尺右移 fontsize = 12) # 字體尺寸 # step5:添加補丁 # 添加綠色的補丁 p1 = patches.Rectangle((0.57, -0.005), # 矩形左下角坐標 width = 0.33, # 矩形的寬度 height = 0.13, # 矩形的高度 alpha = 0.1, # 矩陣的透明度 facecolor = 'green', # 是否填充矩陣(設置為綠色) transform = fig.transFigure) # 保持矩形顯示在圖像最上方 # 添加紅色的補丁 p2 = patches.Rectangle((0.124, -0.005), # 矩形左下角坐標 width = 0.446, # 矩形的寬度 height = 0.13, # 矩形的高度 alpha = 0.1, # 矩陣的透明度 facecolor = 'red', # 是否填充矩陣(設置為紅色) transform = fig.transFigure) # 保持矩形顯示在圖像最上方 # 將補丁添加至畫布 fig.add_artist(p1) # 將p1添加至畫布上 fig.add_artist(p2) # 將p2添加至畫布上 plt.show() # 顯示圖像
matplotlib.pyplot.vlines
matplotlib.pyplot.vlines(x, ymin, ymax, colors='k', linestyles='solid', label='', *, data=None, **kwargs)[源代碼]
繪制垂直線。
在每個位置繪制垂直線 x 從 ymin 到 ymax .
參數: |
|
---|---|
返回: |
|
其他參數: |
|