自定义个范围的x,y坐标(python画图)

时间:2022-07-25
本文章向大家介绍自定义个范围的x,y坐标(python画图),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

我有一个小需求,网上找了半天,结果都不是我想要的,只能自己写一份,分享出来。

关键句:自定义个范围的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()

其他参数各位慢慢调。。