当我使用show()绘制图表时X,图表看起来非常好.但是,当我开始使用savefig()生成大量图形时,savefig()生成的图形的字体,线条,多边形看起来都比show()生成的图形小.我的环境是Ubuntu,后端show()是Qt4Agg.如何使show()情节和savefig()情节看起来一致?
有没有办法使用opencv2和ipython笔记本进行绘图?
我是python图像分析的新手.我决定使用笔记本的工作流程来制作漂亮的记录,因为我正在处理它并且使用matplotlib/pylab绘制的东西很好.
我遇到的最初障碍是如何在笔记本中绘制内容.简单,只需使用魔法:
%matplotlib inline
Run Code Online (Sandbox Code Playgroud)
后来,我想用交互式绘图进行操作,但在专用窗口中绘图总是会冻结.好吧,我再次了解到你需要使用魔法.而不是只导入模块:
%pylab
Run Code Online (Sandbox Code Playgroud)
现在我已经开始使用opencv了.我现在回到同样的问题,我要么根据手头的任务绘制内联或使用专用的交互式窗口.是否有类似的魔法使用?还有另一种让事情发挥作用的方法吗?或者我卡住了,需要回到IDLE运行程序?
作为旁注:我知道opencv已正确安装.首先,因为我没有安装或导入cv2模块的错误.其次,因为我可以用cv2读取图像,然后用其他东西绘制它们.
我正在使用ipython,其代码如下所示:
image = zeros(MAX_X, MAX_Y)
# do something complicated to get the pixel values...
# pixel values are now in [0, 1].
imshow(image)
Run Code Online (Sandbox Code Playgroud)
但是,生成的图像始终具有相同的分辨率,大约为(250x250).我认为图像的尺寸是(MAX_X x MAX_Y),但看起来并非如此.如何让ipython为我提供更高分辨率的图像?
我有一个NxN数组,我正在使用Python绘图matplotlib.pyplot.imshow().N将非常大,我希望我的最终图像具有匹配的分辨率.但是,在随后的代码中,图像分辨率似乎没有随着N的增加而改变.我认为imshow()(至少我如何使用它)具有固定的最小像素大小,该大小比显示具有全分辨率的NxN阵列所需的大.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
array = np.loadtxt("output.dat",unpack=True)
plt.figsize=(30.0, 30.0)
im = plt.imshow(array,cmap='hot')
plt.colorbar(im)
plt.savefig("mandelbrot.pdf")
Run Code Online (Sandbox Code Playgroud)
正如你在上面的代码中看到的那样,我已经尝试过试图plt.figsize增加分辨率,但无济于事.我也尝试了各种输出格式(.pdf,.ps,.eps,.png),但这些都生成了比我想要的分辨率更低的图像..ps,.eps和.pdf图像看起来完全相同.
首先,我的问题是否存在imshow()或是否需要更改我的代码的其他方面以产生更高分辨率的图像?
其次,如何生成更高分辨率的图像?