码迷,mamicode.com
首页 > 编程语言 > 详细

python matplotlib 绘图 和 dpi对应关系

时间:2018-06-26 16:11:39      阅读:817      评论:0      收藏:0      [点我收藏+]

标签:关系   date   IV   --   生成   desktop   and   nis   进制   

dpi表示图内绘图区域的尺寸不是图片外边框

dpi=1     600×400

dpi=2    1200×800

dpi=3    1800×1200

........

dpi=21    (21×600)×(21×400) ---> 12600×8400

 

示例代码:

import time
import scipy.signal as signall
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

y_axis_last=np.linspace(0.0, 0.0, 21120)
plt_x=0
plt_arr=np.random.rand(1024, 1)

def parse_output(start_freq, stop_freq,step ,donser_now_lable,donser, num_now, min_freq):
    """Parse data from soapy_power"""

    # define size
    x_axis = np.linspace(start_freq, stop_freq, round((stop_freq - start_freq)))
    y_axis=  np.linspace(0.0, 0.0, round((stop_freq - start_freq) ))
    #print(len(x_axis))
    donser_now_lable=donser_now_lable+len(x_axis)
        
        
    #y_axis deal
    global  y_axis_last , plt_x , plt_arr
    i=0
    temp_lab=0
    for num in range(donser_now_lable+1,len(donser),1 ):
        if num>=len(donser):
            y_axis[i]=0
            temp_lab=len(donser)-donser_now_lable
        if num_now==1:
            y_axis[i]=donser[num]
        else:
            y_axis[i]=(donser[num]*0.65+y_axis_last[i]*0.35)
        i=i+1
        if i==len(x_axis):
            break
                

        
    y_axis_last=y_axis
    time_stop = time.time()
        
        
        #FFT change
    if temp_lab!=0:
        return -1
    wave_data1=y_axis[0:len(x_axis)]
    #print(len(x_axis))
    wave_data2 = wave_data1 * signall.hann(len(x_axis))
    c=np.fft.fft(wave_data2[0:len(x_axis)])*2/len(x_axis)
    #print(len(c))
    d=int(len(c)/2)
    y_axis=abs(c[0:d])
    x_axis.resize(d)
        
    min=100
    max=0
    for i in range(0,len(y_axis),1 ):
        if y_axis[i]>max:
            max=y_axis[i]
        if y_axis[i]<min:
            min=y_axis[i]
        #print(max)
        #print(min)
     
    
   
        #x_axis y_axis to buffer & update buffer
    if min_freq is None:
        min_freq = start_freq

    if start_freq == min_freq:
        databuffer = {"timestamp": time_stop,
                               "x": list(x_axis),
                               "y": list(y_axis)}
    else:
        databuffer["x"].extend(x_axis)
        databuffer["y"].extend(y_axis)
            
    if stop_freq >0:
        #data_storage.update(databuffer)
        #self.plt_arr=np.random.rand(1024)
        #self.plt_x=0
        #print(self.plt_x)
        if plt_x==0:
            plt_arr=y_axis
            plt_arr.resize(len(y_axis) , 1)
            print("first time")
        else:
            plt_temp=y_axis
            plt_temp.resize(len(y_axis) , 1)
            plt_arr=np.concatenate((plt_arr,plt_temp ), axis=1)
            #print(self.plt_arr) 
            if plt_x%1000==0:
                print(plt_x)
            if plt_x%1000==0:
                cm=hot
                norm = matplotlib.colors.Normalize(vmin=min, vmax=max)  
                map=plt.imshow(plt_arr,interpolation=nearest,cmap=cm,norm=norm, origin=upper)
                plt.xticks([])
                plt.yticks([])
                plt.axis(off)
                #plt.colorbar(mappable=map,ax=None,shrink=0.5, pad=0)
                plt.savefig("filename.png",  dpi=1320)     
                #plt.show()
                print("-------------------------->")
                print(plt_x)
        plt_x+=1
        
        
    temp_str=str(num_now)
        
    return donser_now_lable

def main():
    num_now=1
    donser_now_lable=0 
    sys_start_freq  =  87000000.0        #start fre   87MHZ
    sys_stop_freq   = 108127168.0          #stop  fre  108MHZ
    step            =  10316# 5158 # 2579.0             #Bin size  1KHZ          new    (108127168-87000000)/8192
    bins            =  2048 #4096 #8192   #21120# 10560               #sampling number MHZ
    #time_s        = 1                  # ?times
    stop_freq       = sys_start_freq      #init
    min_freq = None
    plt_x=0
    #donser=np.fromfile("C:\\Users\\Administrator\\Desktop\\bins\\123.b_le.bin", dtype=np.int16 )
    donser=np.fromfile("C:\\Users\\Administrator\\Desktop\\bins\\1.b_le.bin", dtype=np.int16 ,count=629145600)  # 600M  629145600
    while 1:
        #time_start = time.time()
        start_freq = stop_freq
        if  start_freq>=sys_stop_freq:
            break
        stop_freq = start_freq+bins
        #print("Start:", start_freq)
        #print("Stop :", stop_freq)
        donser_now_lable=parse_output(start_freq,stop_freq, step,donser_now_lable,donser, num_now, min_freq)
        num_now=num_now+1
        if donser_now_lable>=len(donser) :
            break

if __name__ == "__main__":
    main()

上代码读入一个二进制bin数据文件1.08GB的一部分,数据格式为无包头、小端模式、16位编码的频谱数据dpi=1320,生成名称为filename.png的图片

技术分享图片

 

python matplotlib 绘图 和 dpi对应关系

标签:关系   date   IV   --   生成   desktop   and   nis   进制   

原文地址:https://www.cnblogs.com/dzzy/p/9229284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!