美文网首页
matplotlib 画图

matplotlib 画图

作者: Adeline_T | 来源:发表于2020-04-27 08:05 被阅读0次
     from matplotlib import pyplot as plt 
    

    折线图

    fig = plt.figure(figsize=(20,10), dpi=80) 或者
    fig, ax = plt.subplots(1)
    plt.plot(x,y, color="red", linewidth=2.5, linestyle="-", label="sine")
    plt.xlim(x1,x2)
    plt.xticks(range(2,16,2))
    plt.minorticks_on() ---> 加minor tick
    figure.ax_joint.xaxis.set_minor_locator(ticker.MultipleLocator(0.2))
    axs[1].xaxis.set_ticks([np]
    axs[1].xaxis.set_ticklabels(tickla)

    当刻度太密集时,使用列表的步长间隔取值
    plt.xticks(x[::2])

    plt.xlabel('xtitle') /plt.ylabel('ytitle')/ plt.title('title')
    plt.legend(loc='upper left', frameon=False)
    textstr = '\mu=%.2f\n\mathrm{median}=%.2f\n'%(mu, median)
    ax.text(0.05, 0.95, textstr, transform=ax.transAxes, fontsize=14,
    verticalalignment='top') 位置放在左上 text设置参考
    plt.savefig('./test.png')
    plt.show()

    from matplotlib.ticker import MultipleLocator
    ax.yaxis.set_minor_locator(MultipleLocator(0.1))

    参考画ticks

    加水平线: plt.axhline(y=2,linewidth=1.5,linestyle='--',color='magenta')
    加竖直线: plt.axvline(0,linestyle=‘—‘,color=‘magenta')
    常用线型: - 实线 -- 虚线 -. 点线 : 细小的虚线
    可以改变点型: s 方形 h 六角形 *星星 +号 d菱形 p五角形
    常用颜色:b 蓝色/ g 绿色/ r 红色/ c 天蓝/ m 紫红/ y 黄色/ k 黑色/ w 白色

    一条线一个颜色的画法:
    cmap = plt.get_cmap('plasma')
    ax.text(1.02,0.95-i/20,'T_c={:.0f}eV'.format(Tc[i]),color=cmap(i/20),transform=ax.transAxes)
    ax.plot(k,gamma[0],color=cmap(i/20.))


    多个panel的处理

    fig, axes=plt.subplots(2,2,figsize=(4,8))
    plt.subplots_adjust(left=0.13, right=0.8, top=0.9, bottom=0.15,hspace=0.25,wspace=0.4)

    ax=fig.add_subplot(211)
    ax=axes[0,0]
    每个panel 加上小标号
    labels = ['a', 'b', 'c']
    for i in range(3):
    ax[i].text(0.05,0.93,labels[i], color ='k', transform=ax[i].transAxes)
    更改全局字号
    font = {'family':'normal','weight':'normal','size':16}
    matplotlib.rc('font',**font)

    sublabel=['(a)','(c)','(e)','(b)','(d)','(f)']
    for i in range(2):
    for j in range(3):
    axes[i,j].text(0.85,0.9,sublabel[3*i+j],transform=axes[i,j].transAxes,color='k',fontsize=20)

    colorbar 相关

    Colormap选取
    cmap=plt.cm.jet
    clb=plt.colorbar()
    plt.clim([1,33])
    ax1.set(xlim=[xx,xx], ylim=[xx, xx])

    Colorbar 摆放位置:
    fig, (ax1, ax2) = plt.subplots(ncols=2)
    img1 = ax1.imshow(data)
    fig.colorbar(img1, ax=ax1)
    ax1.set_aspect('auto')
    img2 = ax2.imshow(-data)
    fig.colorbar(img2, ax=ax2)
    ax2.set_aspect('auto’)
    plt.tight_layout(h_pad=1)
    想放在水平位置 fig.colorbar(im, cax=cax, orientation="horizontal")
    Colorbar title 的位置:
    clb=plt.colorbar()
    Clb.ax.set_xlabel() 放在底下, clb.ax.set_ylabel() 放在侧边, clb.ax.set_title() 放在顶上

    Colorbar ticks:log 轴科学计数改成普通 比如 3*10 —> 30
    from matplotlib.ticker import LogFormatter
    formatter = LogFormatter(10, labelOnlyBase=False)
    cb = plt.colorbar(ticks=[1,5,10,20,50], format=formatter)

    add_color_bar_V(p2d.image,axes[0,2],fig,label='PSD') 可参考这个函数进行修改

    多个panel 一个colorbar
    pcm.set_clim([1,2000])
    cb_ax = fig.add_axes([0.9, 0.1, 0.02, 0.8])
    cbar = fig.colorbar(pcm, cax=cb_ax)
    cbar.ax.set_ylabel('Counts’)

    clb = axs[n, m].pcolormesh(t, w[:], np.log10(psd[:, :]), cmap=purula(), vmax=-2, vmin=-4)
    axs[n, m].tick_params(labelsize=15)
    axs[n, m].set(ylim=[0, 1])
    axs[n, m].set_title(r'Z=' + '%.2f' % z, fontsize=20)
    position0 = fig.add_axes([0.85, 0.1, 0.02, 0.8])
    cbar = plt.colorbar(clb, cax=position0)
    cbar.ax.tick_params(labelsize=18)
    cbar.set_label(r'log_{10}(PSD)', fontsize=20)

    legend 摆放位置 https://www.delftstack.com/zh/howto/matplotlib/how-to-place-legend-outside-of-the-plot-in-matplotlib/

    散点图

    plt.scatter(x,y)

    直方图

    d = xxx ;; 组距
    num_bins = int(max(a)-min(a)/bin_width)
    plt.hist(a,num_bins,normed=1) 默认是频数直方图,加上关键字参数normed = 1变为频率分布直方图

    当组距不均匀时: plt.hist(a,[min(a)+i*bin_width for i in range(num_bins)])

    画不同样式的bar:histtype='stepfilled','histtype', 'barstacked',rwidth=0.8
    facecolor='g',alpha=0.75

    kwargs = dict(hist_kws={'alpha':0.5}, kde_kws={'linewidth':2},norm_hist=True, kde=False)
    x=EMIC_bw
    width=(np.nanmax(x)-np.nanmin(x))/200
    bins=np.arange(np.nanmin(x),np.nanmax(x),width)
    x_weight = np.ones_like(x)/float(len(x))
    plt.hist(x,bins=bins,weights=x_weight,linewidth=2,color='dodgerblue',alpha=0.5,label='EMIC')## ,histtype='step'

    plt.xticks(range(min(a),max(a)+d, d))
    plt.grid(True, linestyle='-.', alpha=0.5) 显示网格,设置透明度


    其他画图参考

    Echarts

    Ploty 画图的github

    seaborn

    相关文章

      网友评论

          本文标题:matplotlib 画图

          本文链接:https://www.haomeiwen.com/subject/ilgdwhtx.html