我有一个小需求,网上找了半天,结果都不是我想要的,只能自己写一份,分享出来。
关键句:自定义个范围的x,y坐标
关键句:范围可以随意设置,不受数据限制
内容:例如我的数据x的范围小于2,y的范围小于2,但是我想画一个x轴和y轴都从0-5的图,这时候好像只能用坐标轴共享才可以。也就是得有一个数据xy0-5范围,以这个为基础,画另一个图。其中两个数据分别是d1,d2。
d1:
看的有点不清楚,不过d1数据最大值是3.5,而d2最大值也不超过2,现在以d1为模板,为d2共享一个坐标轴。
d2
x=d1[:,0]
y1=d1[:,1]
x2=d2[:,0]
y2=d2[:,1]
p1=np.corrcoef(d1[:,0],d1[:,1])#
xy = np.vstack([d1[:,0],d1[:,1]])
z = gaussian_kde(xy)(xy)
plt.subplots_adjust()#如果要两个图并列,见后代码
ax1 = plt.subplot()
f1 = np.polyfit(x,y1, 1)
xk=np.linspace(0,max(x),int(max(x)/0.1))
yk=f1[0]*xk+f1[1]
plt.plot(xk, yk, 'r',label='polyfit values')
plt.setp(ax1.get_xticklabels(), fontsize=6)
plt.show()#第一个图
ax2 = plt.subplot( sharex=ax1, sharey=ax1)
f2 = np.polyfit(x2,y2, 1)
xk=np.linspace(0,max(x),int(max(x)/0.1))
yk1=f1[0]*xk+f1[1]
plt.plot(xk, yk1, 'b',label='polyfit values')
plt.setp(ax2.get_xticklabels(), fontsize=6)
plt.show()#第二个图
如果要同时显示两个图在一起:
x=d1[:,0]
y1=d1[:,1]
x2=d2[:,0]
y2=d2[:,1]
p1=np.corrcoef(d1[:,0],d1[:,1])#
xy = np.vstack([d1[:,0],d1[:,1]])
z = gaussian_kde(xy)(xy)
plt.subplots_adjust()
ax1 = plt.subplot(221)
f1 = np.polyfit(x,y1, 1)
xk=np.linspace(0,max(x),int(max(x)/0.1))
yk=f1[0]*xk+f1[1]
plt.plot(xk, yk, 'r',label='polyfit values')
plt.setp(ax1.get_xticklabels(), fontsize=6)
ax2 = plt.subplot(222, sharex=ax1, sharey=ax1)
f2 = np.polyfit(x2,y2, 1)
xk=np.linspace(0,max(x),int(max(x)/0.1))
yk1=f1[0]*xk+f1[1]
plt.plot(xk, yk1, 'b',label='polyfit values')
plt.setp(ax2.get_xticklabels(), fontsize=6)
plt.show()
其他参数各位慢慢调。。