2013-05-28 36 views
1

说我们有这样的数据:绘制与PyPlot出流畅的线条,然后设置标志

import matplotlib.pyplot as plt 
import numpy as np 

Y = np.array([500., 1000., 1500., 2000., 2500., 3000., 3500., 4000., 
     4500., 5000., 5500., 6000., 6500., 7000., 7500., 8000., 
     8500., 8999.]) 
P = np.array([0.35719454, 1.33640227, 3.6250187 , 4.6098672 , 3.07393609, 
     3.37146857, 3.63601765, 4.22452476, 3.89485839, 4.1829315 , 
     4.02657142, 4.17620968, 4.06966698, 4.18009466, 4.16220121, 
     4.60149918, 4.31294132, 3.94933813]) 

plt.plot(Y,P) 
plt.show() 

我怎么能抚平一点点,同时情节标记每个上所代表的元素x轴?有没有办法做到这一点?

回答

3

这是你在找什么?

import matplotlib.pyplot as plt 
import numpy as np 

Y = np.array([500., 1000., 1500., 2000., 2500., 3000., 3500., 4000., 
     4500., 5000., 5500., 6000., 6500., 7000., 7500., 8000., 
     8500., 8999.]) 
P = np.array([0.35719454, 1.33640227, 3.6250187 , 4.6098672 , 3.07393609, 
     3.37146857, 3.63601765, 4.22452476, 3.89485839, 4.1829315 , 
     4.02657142, 4.17620968, 4.06966698, 4.18009466, 4.16220121, 
     4.60149918, 4.31294132, 3.94933813]) 

from scipy.interpolate import interp1d 
f2 = interp1d(Y, P, kind='cubic') 

xnew = np.linspace(min(Y), max(Y), 100) # you can change the 100 here to a smaller number if you want less 'smoothness' 
plt.plot(Y,P,'o',xnew, f2(xnew),'--') 

plt.show()