条形图切断轴标题

时间:2014-05-06 14:28:47

标签: python matplotlib

我正在尝试使用垂直轴标签和轴标题绘制条形图。

下面的脚本生成图表,但它会切断x轴标签/标题。即使我试图让我的屏幕上的图片更大,它仍然会被切断一点。另外,当我运行它时,我必须运行它两次。我第一次收到有关fontdict属性的错误,但下次它会工作。

任何人都知道如何不切断它?此外,我只是保存屏幕上弹出的那个,因为保存由于某种原因不起作用。

谢谢!

import numpy
import matplotlib
import matplotlib.pylab as pylab
import matplotlib.pyplot
import pdb
from collections import Counter


phenos = [128, 20, 0, 144, 4, 16, 160, 136, 192, 128, 20, 0, 4, 16, 144, 130, 136, 132, 22, 
128, 160, 4, 0, 36, 132, 136, 130, 128, 22, 4, 0, 144, 160, 130, 132, 
128, 4, 0, 136, 132, 68, 130, 192, 8, 128, 4, 0, 20, 22, 132, 144, 192, 130, 2, 
128, 4, 0, 132, 20, 136, 144, 192, 64, 130, 128, 4, 0, 144, 132, 192, 20, 16, 136, 
128, 4, 0, 130, 160, 132, 192, 2,  128, 4, 0, 132, 68, 160, 192, 36, 64, 
128, 4, 0, 136, 192, 8, 160, 36, 128, 4, 0, 22, 20, 144, 132, 160,
128, 4, 0, 132, 20, 192, 144, 160, 68, 64, 128, 4, 0, 132, 160, 144, 136, 192, 68, 20]



from collections import Counter
import numpy as np
import matplotlib.pyplot as plt
from operator import itemgetter


c = Counter(phenos).items()
c.sort(key=itemgetter(1))

font = {'family' : 'sanserif',
        'color'  : 'black',
        'weight' : 'normal',
        'size'   : 22,
        }

font2 = {'family' : 'sansserif',
        'color'  : 'black',
        'weight' : 'normal',
        'size'   : 18,
        }
labels, values = zip(*c)
labels = ("GU", "IT", "AA", "SG", "A, IGI", "A, SG", "GU, A, AA", "D, GU", "D, IT", "A, AA", "D, IGI", "D, AA", "192", "D, A", "D, H", "H", "A")
pylab.show()
pylab.draw()

indexes = np.arange(0, 2*len(labels), 2)
width = 2
plt.bar(indexes, values, width=2, color="blueviolet")
plt.xlabel("Phenotype identifier", fontdict=font)
plt.ylabel("Number of occurances in top 10 \n phenotypes for cancerous tumours", fontdict=font)
#plt.title("Number of occurances for different phenotypes \n in top 10 subclones of a tumour", fontdict=font2)
plt.xticks(indexes + width * 0.5, labels, rotation='vertical', fontdict=font2)
plt.figure(figsize=(8.0, 7.0))
pictureFileName2 = "..\\Stats\\"  + "Phenos2.png"
pylab.savefig(pictureFileName2, dpi=800)


#fig.set_size_inches(18.5,10.5)
#plt.savefig('test2png.png',dpi=100)

1 个答案:

答案 0 :(得分:1)

三个问题:

1,第一次运行代码时它不起作用并且第二次运行不正确。原因是你在制作情节之前打电话给.show()。第一次运行代码时,代码停止在except错误消息指示的位置。第二次,.show()首先执行,现在显示上一次运行的部分制作图。

2,fontdict=font2等不是必需的,实际上是错误的。您只需要**font2

3,截断的刻度标签。有很多不同的方法可以做到这一点,但基本的想法是增加情节周围的空白区域,替代方案是:

plt.gcf().subplots_adjust(bottom=0.35, top=0.7) #adjusting the plotting area

plt.tight_layout() #may raise an exception, depends on which backend is in use

plt.savefig('test.png', bbox_inches='tight', pad_inches = 0.0) #use bbox and pad, if you only want to change the saved figure.  
相关问题