Matplotlib,在图像中设置图表的位置

时间:2014-11-09 00:50:48

标签: python matplotlib figure

我正在制作一个工具,使用Matplotlib自动化几个图表,对于我遇到的每个问题,通常在经过一些研究后我最终找到了解决方案,但在这里我认为我被卡住了。 / p>

1 - 我想要的是在生成的png文件中,在左边的图形开始之前有一种偏移,我可以插入一些文本对象。怎么办?

2 - 我还希望能够在图表下方插入文字,这样会很有用。

主要是我希望能够在图像文件中定义绘图的位置,以下是我目前have以及I want内容的示例。

编辑:

def plot_bar():


  fig = plt.figure(figsize=(600/96, 360/96), dpi = 96)


# Setting the padding between the ticks' labels and the axes
  mpl.rcParams['xtick.major.pad']='10'

  ax = plt.gca()

  ax.spines['top'].set_visible(False)
  ax.spines['right'].set_visible(False)
  ax.spines['left'].set_visible(False)
  ax.spines['bottom'].set_visible(False)


  ax.axes.get_yaxis().set_visible(False)

  mpl.rcParams['axes.facecolor'] = 'white'
  mpl.rcParams["figure.facecolor"]= 'white'
  mpl.rcParams["savefig.facecolor"]= 'white'
  Values1 = ( 10 , 25 , 30 , 40 )
  Values2 = ( 40 , 3 , 10 , 6 )

  N = 4

  ind = np.arange(N)

  width = 0.7
p1 = plt.bar(ind, Values1, width, color='#00A79A', ec='#00A79A')
  p2 = plt.bar(ind, Values2, width, color='#8FDCD6', bottom = Values1, ec='#8FDCD6')


  plt.xticks(ind+width/2., ('Fuel\n\n dollars \n\n dollars', 'Tires', 'Roadcalls', 'Maintenance') )
  plt.yticks(np.arange(0,81,10))

  # Removing Tick lines from axes
  for tic in ax.xaxis.get_major_ticks():
    tic.tick1On = tic.tick2On = False

  for tic in ax.yaxis.get_major_ticks():
    tic.tick1On = tic.tick2On = False
  plt.savefig("fichier.png")

2 个答案:

答案 0 :(得分:0)

尝试使用subplots_adjust数字方法:

fig.subplots_adjust( left=0.25, bottom=0.25 )

答案 1 :(得分:0)

您可以使用subplots_adjust添加间距。 tight_layout还会扩展您的框以适应之前图中缺失的文字("美元")。

至于其余的情节,添加标签应该相当容易。例如,下面的for循环会在每个条形图的顶部添加总计(类似于this demo)。

for bar in p2:
    height = bar.get_height() + p1[bar.get_x()].get_height()
    ax.text(bar.get_x()+bar.get_width()/2., 1.05*height, '%d'%int(height),
            ha='center', va='bottom')
plt.tight_layout()
plt.subplots_adjust(left=0.3, bottom=0.3)