爲柱狀圖添加數據

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

font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': '8'}
matplotlib.rc("font", **font)

age = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75]
P_num = [372, 27, 115, 1671, 10293, 24256, 24326,
         22674, 23020, 116522, 11849, 5395, 2137, 704]

C_num = [920, 71, 232, 3604, 23134, 60621, 72797, 86879,
         99235, 63754, 43330, 12543, 3948, 1581]
print(len(age), len(P_num), len(C_num))

fig, ax = plt.subplots(1, 2, figsize=(8, 20), dpi=100, sharex=True)
bar_width = 0.5
x_1 = range(len(P_num))
# x_2 = [i + bar_width for i in x_1]
ax[0].bar(x_1, P_num)
# y_label = ["{:.1f}".format(_y) for _y in P_num]
ax[0].set_xlabel('年齡(歲)')
ax[0].set_ylabel('總人數(個)')
ax[0].set_title('不同年齡會員的數量')
x = 0
for y in P_num:
    # plt.text(x+500, y-0.2, "%s" %x)
    ax[0].text(x, y + 100, y, ha='center', va='bottom')
    x += 1
# ax[0].set_yticks(P_num)
ax[1].bar(x_1, C_num)
# ax[0].set_xlabel('年齡(歲)')
ax[1].set_ylabel('總消費次數(次)')
ax[1].set_title('不同年齡會員的購買力')
x = 0
for y in C_num:
    # plt.text(x+500, y-0.2, "%s" %x)
    ax[1].text(x, y + 1000, y, ha='center', va='bottom')
    x += 1
plt.xticks(x_1, age)

plt.show()

在這裏插入圖片描述
需要注意的是:
1、當plt.subplots()爲以一維的時候也就是一行多列的時候,行號可以省略。要是多維的時候就需要用ax[i,j]來定位是第幾行第幾列。
2、在設置text的時候只能是一個柱一個柱的設置。我那個for循環寫的不簡潔,但是比較好理解。可以使用zip函數來簡化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章