matplotlib 画图

 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,ax = plt.subplots(1,1,figsize=[5,4])
pm = plot2d(spt.xpsd,spt.t,spt.fnp.pi2, log=True, vmin=Evmin, vmax=Evmax,
clip=True, xlabel=r't\Omega_{e}',ylabel=r'\omega/\Omega_{e0}',ax=ax)
cax = get_cax(fig,ax, orientation='v', width=0.025)
ax.set(xlabel=r't\Omega_{e0}')

cb = plt.colorbar(pm.image, cax=cax) #, orientation='horizontal'
cb.ax.xaxis.set_ticks_position('top')
# cb.set_label(r'$\mathrm{log}_{10}(P_B)/\mathrm{max}[\mathrm{log}_{10}(P_B)]$')
cb.set_label(r'$P_B$') 

cb.ax.xaxis.set_label_position('top')

多个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)

# now we add two dashed lines 
ax0 = axes[0,1]
ax1 = axes[1,0]
x0 = ax0.get_xlim()[1]
y0 = ax0.get_ylim()[0]
x1 = ax1.get_xlim()[0]
y1 = ax1.get_ylim()[1]
_draw_connecting_line(ax0, x0, y0, ax1, x1, y1)

ax0 = axes[0,2]
ax1 = axes[1,3]
x0 = ax0.get_xlim()[0]
y0 = ax0.get_ylim()[0]
x1 = ax1.get_xlim()[1]
y1 = ax1.get_ylim()[1]
_draw_connecting_line(ax0, x0, y0, ax1, x1, y1)

# now we determine colorbar location
ax_pos_ul = axes[0,-1].get_position()
ax_pos_ll = axes[1,-1].get_position()

cb_height = ax_pos_ul.ymax-ax_pos_ll.ymin
cb_width = 0.015
hspace = 0.025

x0 = ax_pos_ll.xmax + hspace
y0 = ax_pos_ll.ymin    
x1 = x0 + cb_width

cbp = [x0, y0, cb_width, cb_height]
cax = fig.add_axes(cbp)

plt.colorbar(img, label=r'P$_B$', cax=cax)

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)

多个panel 共用一个x axis:

fig, a = plt.subplots(3,figsize = [6,10],sharex=True)
plt.subplots_adjust(left=0.16, right=0.8, top=0.9, bottom=0.15,hspace=0.3,wspace=0.4)

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容