作者yogi (Yogi)
看板Python
标题Re: [问题] matplotlib图片存档如何保留座标轴
时间Sun Feb 14 00:16:18 2016
※ 引述《cosmoSJ (cosmoSJ)》之铭言:
: 大家好,新年恭喜
: 有个问题困扰我很久想请教一下大家
: 目前在做投资绩效回测的时候,因为要将结果输出成图比较容易确认
: 结果发现如果图用show的方法,可以正确显示坐标轴
: 但是如果savefig後,他的座标轴就会不见
: 范例如下
: 正常的
: http://imgur.com/CSkxdA3
: 如果用saveig,会变成这个
: http://imgur.com/yQEHyw2
: 附上原始码如下
: fig = plt.figure(facecolor='#07000d')
: ax1 = plt.subplot2grid((3,2), (1,0), rowspan=4, colspan=4,
: axisbg='#07000d')
: candlestick_ohlc(ax1,newAr[:],width=.6,colorup='#ff1717',colordown='#53c156')
: par1 = ax1.twinx()
: par1.plot(datenumArr[:],AcctAmtArr[:],color = "red",linewidth=1)
: ax1.grid(True, color='w')
: ax1.xaxis.set_major_locator(mticker.MaxNLocator(10))
: ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
: plt.gca().yaxis.set_major_locator(mticker.MaxNLocator(prune='upper'))
: ax1.tick_params(axis='x', colors='w')
: plt.ylabel('Stock price and Volume')
: plt.sca(par1)
: fig.savefig(u"test.png", format="png")
: 一直都试不出来问题在哪,只能请大家帮忙看看
: 感谢各位前辈
原始码不完整 不过感觉有可能问题是出在你设定Axis的位置
举个例子:
import matplotlib.pylab as plt
x = [1,2,3]
y = map(lambda(x): x * 1.5, x)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.set_title("TEST")
ax.set_xlabel("x")
ax.plot(x, y, 'r--')
fig.savefig("testfig.png")
这个输出就会跟你的问题一样
把上面那行改一下:
import matplotlib.pylab as plt
x = [1,2,3]
y = map(lambda(x): x * 1.5, x)
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.set_title("TEST")
ax.set_xlabel("x")
ax.plot(x, y, 'r--')
fig.savefig("testfig.png")
这样axis就跑出来了
因为原本axis的设定会刚好压在整张图片的最边界处 当然就会变成不可见了
所以把axis设定往里面挪一点点 就可以正常显示了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.166.210
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1455380181.A.086.html
1F:推 cosmoSJ: 感谢您 有解了 正是您提供的解法 02/14 16:26