Change resolution of imshow in ipython

后端 未结 2 1029
时光说笑
时光说笑 2021-01-01 15:25

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 n         


        
2条回答
  •  -上瘾入骨i
    2021-01-01 16:07

    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
    

    images of different sized arrays

    # 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()
    

    Larger sized figuer

    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.

提交回复
热议问题