python 使用 colormap 對條形圖着色,添加數據標簽


0、import

import numpy as np import pandas as pd import matplotlib as mplfrom matplotlib import pyplot as plt

1、讀取數據

df = pd.read_csv('dataset/CHN_GDP(00-19).csv', skiprows=3, skipfooter=4, encoding='utf-8', engine='python' ) gdp = df[['地區', '2019年']].sort_values(by='2019年') districts, gdp_2019 = zip(*gdp.values)

說明:此數據是我國 00年——19年各省 GDP 數據,下載說明可參看

https://www.cnblogs.com/shanger/p/13153014.html

 

2、繪制圖形:

# 使圖表正常顯示中文
mpl.rcParams['font.sans-serif'] = 'SimHei'
# 使坐標軸刻度標簽正常顯示負號
mpl.rcParams['axes.unicode_minus'] = False fig = plt.figure(figsize=(18, 88), facecolor='cornsilk' ) cm_names = ['BuPu', 'cool', 'hot', 'jet', 'PiYG',    'plasma', 'PuRd', 'rainbow', 'RdYlGn_r', 'spring'] axes = fig.subplots(nrows=(len(cm_names)+1)//2, ncols=2, sharey=True ) for ax, cm_name in zip(axes.ravel(), cm_names): cm = mpl.cm.get_cmap(cm_name) colors = cm(np.linspace(0, 1, 30)) ax.barh(y=districts, width=gdp_2019, height=0.8, color=colors, edgecolor='green' ) # 添加無指向型的注釋文本
    for i, (district, gdp) in enumerate(zip(districts, gdp_2019)): x = gdp-8000 if gdp > 100000 else gdp - 100    # 三元表達式 d = district[:3] if set(district).intersection('龍內') else district[:2] # 三元表達式
nums
= str(int(gdp_2019[i])) text = ''.join([d, ' ', nums[:-3], ',', nums[-3:]]) ax.text(x, # 注釋內容所在的橫軸坐標 y=i, # 注釋內容所在的縱軸坐標 s=text, # 注釋的文本內容 size=15, # 字體大小 weight='bold', # 注釋文本內容的字體粗細風格 color='navy' # 文本顏色
        
) ax.set_ylim(-0.7, 30), ax.set_title(label=cm_name, fontdict={'fontsize': 15,}     ) ax.xaxis.grid(color='grey', ls=':' )

  # 隱藏上邊和右邊的軸脊 ax.spines[
'top'].set_visible(False) ax.spines['right'].set_color('None') # 顯示圖形
plt.show();

圖形:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM