I am using ipython, with a code that looks like this:
image = zeros(MAX_X, MAX_Y)
# do something complicated to get the pixel values...
# pixel values are now in [0, 1].
imshow(image)
However, the resulting image always has the same resolution, around (250x250). I thought that the image's dimensions would be (MAX_X x MAX_Y), but that is seemingly not the case. How can I make ipython give me an image with a greater resolution?
We can set the dpi value to get a high-quality image. Using the saving() method, we can save the image with format=”png” and dpi=1200. To show the image, use the plt. show() method.
imshow() method is used to display an image in a window. The window automatically fits to the image size. Parameters: window_name: A string representing the name of the window in which image to be displayed.
The most direct way is to just render your array to RGB using the colormap, and then change the pixels you want.
Save Figure in High Resolution in Matplotlib We can plot figures in high resolutions by setting high values of dpi in matplotlib. pyplot. savefig() function. We can control the resolution of the saved figure through dpi parameter in savefig() function.
The height and width of the displayed image on the screen is controlled by the figure size and the axes size.
figure(figsize = (10,10)) # creates a figure 10 inches by 10 inches
Axes
axes([0,0,0.7,0.6]) # add an axes with the position and size specified by
# [left, bottom, width, height] in normalized units.
Larger arrays of data will be displayed at the same size as smaller arrays but the number of individual elements will be greater so in that sense they do have higher resolution. The resolution in dots per inch of a saved figure can be be controlled with the the dpi argument to savefig.
Here's an example that might make it clearer:
import matplotlib.pyplot as plt
import numpy as np
fig1 = plt.figure() # create a figure with the default size
im1 = np.random.rand(5,5)
ax1 = fig1.add_subplot(2,2,1)
ax1.imshow(im1, interpolation='none')
ax1.set_title('5 X 5')
im2 = np.random.rand(100,100)
ax2 = fig1.add_subplot(2,2,2)
ax2.imshow(im2, interpolation='none')
ax2.set_title('100 X 100')
fig1.savefig('example.png', dpi = 1000) # change the resolution of the saved image
# change the figure size
fig2 = plt.figure(figsize = (5,5)) # create a 5 x 5 figure
ax3 = fig2.add_subplot(111)
ax3.imshow(im1, interpolation='none')
ax3.set_title('larger figure')
plt.show()
The size of the axes within a figure can be controlled in several ways. I used subplot above. You can also directly add an axes with axes or with gridspec.
You're probably looking for pcolormesh
rather than imshow
. The former has the purpose of plotting data into space, pixel-by-pixel, rather than showing an image.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With