更改水平条形图大小matplotlib

时间:2017-06-19 13:06:11

标签: python matplotlib

我正在尝试用mathplotlib创建一个水平条纹,但我遇到了几个问题。

  1. 我需要改变整个情节的大小。目前默认为800x600。我想自己设置参数,这样情节就可以调整到它。因为例如目前在酒吧之间有太多的空白空间,我想扩大酒吧的宽度。

  2. 如果文本(条形标题或数字值)不适合绘图,则将省略。我想扩展屏幕,以免文本消失。

  3. 这是代码输出的示例图像: enter image description here

    以下是示例代码:

    import numpy as np
    import matplotlib.pyplot as plt
    
    people = ('Tom sadf hasidfu hasdufhas d', 'Dick', 'Harry', 'Slim')
    y_pos = np.arange(len(people))
    performance = 3 + 10 * np.random.rand(len(people))
    
    plt.barh(y_pos, performance, align='center', height=0.3, color="skyblue")
    plt.yticks(y_pos, people)
    plt.xlabel('Performance')
    plt.title('How fast do you want to go today?')
    
    for i, v in enumerate(performance):
        plt.text(v + 0.5, i, str(v), color='blue', fontweight='bold')
    
    #plt.show()
    
    filename = "myfilename.png"
    plt.savefig(filename)
    

1 个答案:

答案 0 :(得分:1)

有很多方法可以改变图形大小并调整图形的参数。他们都可以使用选择的搜索引擎找到。

举一个例子,可以通过figsize参数更改数字大小,可以通过调用plt.tight_layout包含tick标签,并且可以通过plt.xlim设置限制。

import numpy as np
import matplotlib.pyplot as plt

people = ('Tom Hanswurst Fitzgerald', 'Dick', 'Harry', 'Slim')
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))

plt.figure(figsize=(8,4))
plt.barh(y_pos, performance, align='center', height=0.3, color="skyblue")
plt.yticks(y_pos, people)
plt.xlim(0,np.max(performance)*1.4)
plt.xlabel('Performance')
plt.title('How fast do you want to go today?')

for i, v in enumerate(performance):
    plt.text(v + 0.5, i, str(v), color='blue', fontweight='bold')

plt.tight_layout()
plt.show()

enter image description here