数据可视化第八天(同位置多柱状图)

发布于:2024-05-21 ⋅ 阅读:(153) ⋅ 点赞:(0)

同位置多柱状图主要是通过width重新获得x的坐标,第一个位置是ps,第二个就是ps+width,第三个就是pos+width*width进行绘制.
通过fig的add_subplot()函数进行子图的选取

在这里插入图片描述

# 国家
countries = ['China', 'Japan', 'American', 'England', 'Germany']

# 金牌个数
gold_medal = [16, 12, 9, 8, 8]
# 银牌个数
silver_medal = [8, 10, 4, 10, 5]
# 铜牌个数
bronze_medal = [13, 5, 2, 7, 5]


# 设置画布
fig = plt.figure(figsize=(6,5),dpi=150)

ax1=fig.add_subplot(234)
ax1.set_title('gold')
ax1.bar(countries,gold_medal,color='gold')
#旋转x标签
ax1.tick_params(axis='x',rotation=45)


# 一个画布分为2行3列,定位第二个
ax2 = fig.add_subplot(235)

ax2.set_title("sliver")
# 旋转x标签
ax2.tick_params(axis="x",rotation=45)

# 银牌榜
ax2.bar(countries, silver_medal, color="silver")

# 一个画布分为2行3列,定位第二个
ax3 = fig.add_subplot(236)

ax3.set_title("bronze")
# 旋转x标签
ax3.tick_params(axis="x",rotation=45)

# 铜牌榜
ax3.bar(countries, bronze_medal, color="#A0522D")

# ================绘制总图:绘制2行一列,移动到第一行======
ax = fig.add_subplot(211)

# 1.将x轴转换为数值
x_int = np.arange(len(countries))

# 2.设置图形的宽度
width = 0.2

# 确定x起始位置
gold_x = x_int  # 金牌起始位置

silver_x = x_int+width  # 银牌的起始位置

bronze_x = x_int + 2*width # 铜牌的起始位置

# 分别绘制图形

ax.bar(gold_x, gold_medal, width=width,color="gold", label="gold")  # 金牌图形

ax.bar(silver_x, silver_medal, width=width, color="silver",label="sliver") # 银牌图形

ax.bar(bronze_x, bronze_medal, width=width, color="saddlebrown",label="bronze") # 铜牌图形

# 将x轴的坐标变回来

# plt.xticks(x_int,labels=countries)
# 移动x标记的位置,再替换内容
ax.set_xticks(x_int + width)

ax.set_xticklabels(countries )

#-----------显示高度文本----------------
# 金牌 # 银牌 # 铜牌
for i in range(len(countries)):
    # 金牌
    ax.text(gold_x[i],gold_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)
    # 银牌
    ax.text(silver_x[i],silver_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)
    # 铜牌
    ax.text(bronze_x[i],bronze_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)
    

# 显示图例
ax.legend(fontsize=6 )

plt.tight_layout()
plt.show()

网站公告

今日签到

点亮在社区的每一天
去签到