matplotlib optimale figsize wenn newline in xlabel
Verfasst: Mittwoch 2. Juni 2010, 15:24
Hallo,
ich muss einen barplot auf die Breite 3.27 inch bekommen. Das Problem ist, dass ich
einen newline in meinen xticklabels und im xlabel habe. Dadurch wird mir immer die x-Achsenbeschriftung
abgeschnitten, wenn ich die figure-dimension (3.27,3) waehle. Wenn ich die hoehe veraendere (z.B. 6 inch), dann
wird der Text geplotted, der plot sieht aber nicht gut aus, weil er in die Laenge gezogen ist.
Hier mein code:
Kennt jemand eine Moeglichkeit, um alle labels auf den Plot zu bekommen ohne dass die figure-Hoehe zu gross wird?
Vielen Dank im Voraus,
Hannes
ich muss einen barplot auf die Breite 3.27 inch bekommen. Das Problem ist, dass ich
einen newline in meinen xticklabels und im xlabel habe. Dadurch wird mir immer die x-Achsenbeschriftung
abgeschnitten, wenn ich die figure-dimension (3.27,3) waehle. Wenn ich die hoehe veraendere (z.B. 6 inch), dann
wird der Text geplotted, der plot sieht aber nicht gut aus, weil er in die Laenge gezogen ist.
Hier mein code:
Code: Alles auswählen
import matplotlib.pyplot as mpl
import scipy
mpl.rcParams['legend.fancybox'] = True
mpl.rcParams['legend.fontsize'] = 8
mpl.rcParams['font.size']=8
mpl.rcParams['axes.labelsize']=8
mpl.rcParams['ytick.labelsize']=8
mpl.rcParams['xtick.labelsize']=8
mpl.rcParams['font.sans-serif']=["Arial"]
mpl.rcParams['figure.facecolor']='w'
fig = mpl.figure(figsize=(3.27, 3))
xticklabels = ('100%\n160', '2%\n160', '100%\n190', '2%\n190', '100%\n220', '2%\n220')
#barplot
data1 = [1,2,3,4,5,6]
data2 = [6,5,4,3,2,1]
error1 = [0.1, 0.3, 0.4, 0.2, 0.1, 0.2]
error2 = [0.3, 0.3, 0.2, 0.1, 0.3, 0.1]
N = len(data2)
ind = scipy.arange(N)
ax = fig.add_subplot(111)
width = 0.2
rects1 = ax.bar(ind + width, data1, width, color='y', yerr=error1, ecolor='k', alpha=0.5)
rects2 = ax.bar(ind, data2, width, color='r', yerr=error2, ecolor='k',alpha=0.5)
ax.set_xticks(ind+width)
ax.set_xticklabels(xticklabels)
mpl.xlabel("relative CK activity\nheart rate (bpm)")
mpl.ylabel(r"$t_{mito} (s)$")
mpl.legend((rects1[0], rects2[0]), ["data", "model prediction"], loc=0)
mpl.show()
mpl.savefig('figure2_fit_results.eps')
Vielen Dank im Voraus,
Hannes