1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python读取plt文件吗_用Python读取文件并绘制CDF

python读取plt文件吗_用Python读取文件并绘制CDF

时间:2023-09-05 18:36:27

相关推荐

python读取plt文件吗_用Python读取文件并绘制CDF

为了完整起见,您还应考虑:重复:您可以在数据中多次拥有同一点。

点之间可以有不同的距离

点可以浮动

您可以使用numpy.histogram,以这样的方式设置箱子边缘,即每个箱子只收集一个点的所有出现。

您应该保留density=False,因为根据文档:Note that the sum of the histogram values will not be equal to 1 unless bins of unity width are chosen

您可以规范化每个bin中的元素数除以数据大小。import numpy as np

import matplotlib.pyplot as plt

def cdf(data):

data_size=len(data)

# Set bins edges

data_set=sorted(set(data))

bins=np.append(data_set, data_set[-1]+1)

# Use the histogram function to bin the data

counts, bin_edges = np.histogram(data, bins=bins, density=False)

counts=counts.astype(float)/data_size

# Find the cdf

cdf = np.cumsum(counts)

# Plot the cdf

plt.plot(bin_edges[0:-1], cdf,linestyle='--', marker="o", color='b')

plt.ylim((0,1))

plt.ylabel("CDF")

plt.grid(True)

plt.show()

例如,使用以下数据:#[ 0. 0. 0.1 0.1 0.2 0.2 0.3 0.3 0.4 0.4 0.6 0.8 1. 1.2]

data = np.concatenate((np.arange(0,0.5,0.1),np.arange(0.6,1.4,0.2),np.arange(0,0.5,0.1)))

cdf(data)

你会得到:

还可以对cdf进行插值以获得连续函数(使用线性插值或三次样条曲线):import numpy as np

import matplotlib.pyplot as plt

from scipy.interpolate import interp1d

def cdf(data):

data_size=len(data)

# Set bins edges

data_set=sorted(set(data))

bins=np.append(data_set, data_set[-1]+1)

# Use the histogram function to bin the data

counts, bin_edges = np.histogram(data, bins=bins, density=False)

counts=counts.astype(float)/data_size

# Find the cdf

cdf = np.cumsum(counts)

x = bin_edges[0:-1]

y = cdf

f = interp1d(x, y)

f2 = interp1d(x, y, kind='cubic')

xnew = np.linspace(0, max(x), num=1000, endpoint=True)

# Plot the cdf

plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')

plt.legend(['data', 'linear', 'cubic'], loc='best')

plt.title("Interpolation")

plt.ylim((0,1))

plt.ylabel("CDF")

plt.grid(True)

plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。