WELCOME

不积跬步,无以至千里;不积小流,无以成江海。

matplotlib绘制柱状图

1.柱状图的绘制

柱状图是一种用矩形柱来表示数据分类的图表。
柱状图可以垂直绘制,也可以水平绘制。
它的高度与其所表示的数值成正比关系。
柱状图显示了不同类别之间的比较关系,图表的水平轴 X 指定被比较的类别,垂直轴 Y 则表示具体的类别值

matplotlib.pyplot.bar(x, height, width: float = 0.8, bottom = None, *, align: str = ‘center’, data = None, **kwargs)

x 表示x坐标,数据类型为float类型,一般为np.arange()生成的固定步长列表
height 表示柱状图的高度,也就是y坐标值,数据类型为float类型,一般为一个列表,包含生成柱状图的所有y值
width 表示柱状图的宽度,取值在0~1之间,默认值为0.8
bottom 柱状图的起始位置,也就是y轴的起始坐标,默认值为None
align 柱状图的中心位置,“center”,"lege"边缘,默认值为’center’
color 柱状图颜色,默认为蓝色
alpha 透明度,取值在0~1之间,默认值为1
label 标签,设置后需要调用plt.legend()生成
edgecolor 边框颜色 (ec)
linewidth 边框宽度,浮点数或类数组,默认为None (lw)
tick_label:柱子的刻度标签,字符串或字符串列表,默认值为None。
linestyle :线条样式 (ls)

 

 1.1 bottom参数 柱状图的起始位置,也就是y轴的起始坐标,默认值为None

 

 1.2 color参数 设置柱状图的柱状颜色

描边 -相关的关键字参数为:
edgecolor 或 ec
linestyle 或 ls
linewidth 或 lw

 

 2.同位置多柱状图

同一 x 轴位置绘制多个柱状图,主要通过调整柱状图的宽度和每个柱状图x轴的 起始位置

 

 

 

 

# 国家
countries = ['挪威', '德国', '中国', '美国', '瑞典']

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

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

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

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

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

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

    
# ==================分别绘制图形
# 金牌图形
plt.bar(gold_x,gold_medal,width=width,color="gold",label='金牌')

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

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

# ================将x轴的坐标变回来

# 注意x标签的位置未居中
plt.xticks(x+width, labels=countries)

# verticalalignment:(va)垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
# horizontalalignment:(ha)水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]
#-----------显示高度文本----------------
for i in range(len(countries)):
    # 金牌的文本设置
    plt.text(gold_x[i],gold_medal[i],gold_medal[i],va="bottom",ha="center")
    # 银牌牌
    plt.text(silver_x[i],silver_medal[i],silver_medal[i],va="bottom",ha="center")
    # 铜牌
    plt.text(bronze_x[i],bronze_medal[i],bronze_medal[i],va="bottom",ha="center")

# 显示图例
plt.legend()
plt.show()

 

 

 

 

posted @ 2022-05-05 15:17  Ambitious~  阅读(791)  评论(0)    收藏  举报