我试图在我的人物顶部附近展示一个传奇(如this)和上面的标题(如this)
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,24,1)
y = np.array([400,650,1020,1300,1600,1950,2200,2550,2850,3150,3400,3550,3800,3950,4050,4150,4210,4250,4300,4320,4310,4300,4200])
fig = plt.figure()
ax = plt.subplot(111)
ax.plot(x,y,'o', label='data set 1')
plt.text(0.5, 1.4, 'Data set A-1',
horizontalalignment='center',
fontsize=16,
transform = ax.transAxes)
ax.set_xlabel('x', fontsize=14)
ax.set_ylabel('y', fontsize=14)
ax.set_ylim(ymax=5000)
ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.25),
ncol=3, fancybox=True, shadow=True)
#plt.tight_layout()
plt.show()
fig.savefig('test.pdf')
但是,当我保存此图表时,标题和图例都会丢失。只有轴和数据点保存在pdf中。
答案 0 :(得分:3)
您正在将它们移出可见区域。如果您使用set_title
mpl将照顾它的位置。与图例上的边界框相同:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,24,1)
y = np.array([400,650,1020,1300,1600,1950,2200,2550,2850,3150,3400,3550,3800,3950,4050,4150,4210,4250,4300,4320,4310,4300,4200])
fig = plt.figure()
ax = plt.subplot(111)
ax.plot(x,y,'o', label='data set 1')
ax.set_title('Data set A-1')
ax.set_xlabel('x', fontsize=14)
ax.set_ylabel('y', fontsize=14)
ax.set_ylim(ymax=5000)
ax.legend(loc='upper center',
ncol=3, fancybox=True, shadow=True)
#plt.tight_layout()
plt.show()
您可能还希望将num_points=1
作为kwarg传递给legend
。
答案 1 :(得分:1)
您是否希望图例也在轴上?
#!/usr/bin/python3
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,24,1)
y = np.array([400,650,1020,1300,1600,1950,2200,2550,
2850,3150,3400,3550,3800,3950,4050,4150,
4210,4250,4300,4320,4310,4300,4200])
fig = plt.figure()
ax = plt.subplot(111)
ax.plot(x,y,'o', label='data set 1')
ax.set_xlabel('x', fontsize=14)
ax.set_ylabel('y', fontsize=14)
ax.set_ylim(ymax=5000)
ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.05),
ncol=3, fancybox=True, shadow=True)
title = ax.set_title('Data set A-1')
fig.tight_layout()
fig.subplots_adjust(top=0.85)
title.set_y(1.07)
fig.savefig("13.png")