python绘制横向水平柱状条形图Bar

    科技2022-09-10  123

    python绘制横向水平柱状条形图Bar

     

    import matplotlib

    import random

    import matplotlib.pyplot as plt

     

    # 中文乱码和坐标轴负号处理。

    matplotlib.rc('font', family='SimHei', weight='bold')

    plt.rcParams['axes.unicode_minus'] = False

     

    #城市数据。

    city_name = ['北京', '上海', '广州', '深圳', '成都']

     

    #数组反转。

    city_name.reverse()

     

    #装载随机数据。

    data = []

    for i in range(len(city_name)):

    data.append(random.randint(100, 150))

     

    #绘图。

    fig, ax = plt.subplots()

    b = ax.barh(range(len(city_name)), data, color='#6699CC')

     

    #为横向水平的柱图右侧添加数据标签。

    for rect in b:

    w = rect.get_width()

    ax.text(w, rect.get_y()+rect.get_height()/2, '%d' %

    int(w), ha='left', va='center')

     

    #设置Y轴纵坐标上的刻度线标签。

    ax.set_yticks(range(len(city_name)))

    ax.set_yticklabels(city_name)

     

    #不要X横坐标上的label标签。

    plt.xticks(())

     

    plt.title('水平横向的柱状图', loc='center', fontsize='25',

    fontweight='bold', color='red')

     

    plt.show()

     

    运行结果:

     

     

    可以简单的绘制一个水平横向的柱状图:

     

    import matplotlib.pyplot as plt

    import random

    import matplotlib

     

    matplotlib.rc('font', family='SimHei', weight='bold')

     

    city_name = ['北京', '上海', '广州', '深圳', '成都']

    city_name.reverse()

     

    data = []

    for i in range(len(city_name)):

    data.append(random.randint(100, 200))

     

    colors = ['red', 'yellow', 'blue', 'green', 'gray']

    colors.reverse()

     

    plt.barh(range(len(data)), data, tick_label=city_name, color=colors)

     

    #不要X横坐标标签。

    #plt.xticks(())

     

    plt.show()

    输出结果如图:

    Processed: 0.012, SQL: 9