【问题标题】:How to set distance between bars in a horizontal bar diagram如何在水平条形图中设置条形之间的距离
【发布时间】:2021-12-09 19:30:31
【问题描述】:

我想从 python 计数器绘制条形图。

toplist = countersum.most_common(len(countersum))
topkeylist = list()
topvallist = list()
for i in range(len(toplist)):
    topkeylist.append(toplist[i][0])
    topvallist.append(toplist[i][1])
for i in range(len(toplist)):
    print(topkeylist[i],":" ,topvallist[i])

keylist = list()
for key in topkeylist:
    keylist.append(str(key))

plt.barh(keylist[:100], topvallist[:100], height = 0.3, align = 'center')
plt.xlabel('Occurence inside the dataset')
plt.ylabel('N-gram sample')
plt.show()

它给了我以下情节:

我想设置条之间的间距,以便它们甚至可以触摸并将文本与条对齐 - 因为文本大小与条的宽度相同,以便更好地阅读。

【问题讨论】:

    标签: python matplotlib bar-chart counter diagram


    【解决方案1】:

    您可以在dict 中设置您想要的内容并使用rcParams.update(params),如下所示:

    (因为我无法运行你的代码,发个例子)

    import matplotlib.pyplot as plt
    import random
    random.seed(123)
    
    params = {'figure.figsize'  : (50, 40),
              'axes.labelsize'  : 30,
              'axes.titlesize'  : 30,
              'xtick.labelsize' : 20,
              'ytick.labelsize' : 20}
    plt.rcParams.update(params)
    
    plt.barh([random.randint(1,100) for _ in range(200)], 
             [random.randint(1,100) for _ in range(200)], 
             height = 0.5, align = 'center')
    plt.xlabel('Occurence inside the dataset')
    plt.ylabel('N-gram sample')
    plt.yticks(range(110))
    
    plt.show()
    

    输出:

    【讨论】:

      【解决方案2】:

      您可以使用此处的宽度参数来调整条的宽度:

      plt.barh(keylist[:100], topvallist[:100], height = 0.3, align = 'center', width=5).
      

      另外,请尝试减小 y 轴上的字体大小,以使刻度线更清晰:

      plt.yticks(fontsize=10).
      

      如果这不起作用,您可以使用增加图形的大小

      fig = plt.figure(figsize=(18,18))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多