1

我一直在尝试绘制平滑图,这是我的代码


import matplotlib.pyplot as plt

#fig,axes= plt.subplots(nrows=6, ncols=1, squeeze=False)

x = df["DOY"]
y = df["By"]
z = df["Bz"]
a = df["Vsw"]
b = df["Nsw"]
c = df["magnetopause_distance"]
d = df["reconnection_rate"]

之后,我使用以下逻辑绘制相同的

#create a figure
fig=plt.figure()

#define subplots and define their position
plt1=fig.add_subplot(611)
plt2=fig.add_subplot(612)
plt3=fig.add_subplot(613)
plt4=fig.add_subplot(614)
plt5=fig.add_subplot(615)
plt6=fig.add_subplot(616)

plt1.plot(x,y,'black',linewidth=0.5,marker=None)
plt1.set_ylabel("By")
plt1.set_title("3-6 July 2003")


plt2.plot(x,z,'black',linewidth=0.5)
plt2.set_ylabel("Bz")

plt3.plot(x,a,'black',linewidth=0.5)
plt3.set_ylabel("Vsw")

plt4.plot(x,b,'black',linewidth=0.5)
plt4.set_ylabel("Nsw")

plt5.plot(x,c,'black',linewidth=0.5)
plt5.set_ylabel("MD")

plt6.plot(x,d,'black',linewidth=0.5)
plt6.set_ylabel("MRR")


plt.subplots_adjust(hspace = 2,wspace = 2)



#saving plot in .jpg format
plt.savefig('myplot01.jpg', format='jpeg',dpi=500, bbox_inches='tight')

最后,我得到了这样的情节: 在此处输入图像描述

我想要的是这样的: 在此处输入图像描述

对不起,错别字。谢谢你的时间 :)

4

1 回答 1

0

利用:

from scipy.interpolate import UnivariateSpline
import numpy as np

list_x_new = np.linspace(min(x), max(x), 1000)
list_y_smooth = UnivariateSpline(x, y, list_x_new)

plt.plot(list_x_new, list_y_smooth)
plt.show() 

这是其中一张图,您可以根据要绘制的值list_y_smooth替换值。y

于 2020-08-20T07:15:11.090 回答