繁体   English   中英

即使我没有数据,如何增加概率密度 plot 的 x 轴范围?

[英]How can I increase range of x-axis in probability density plot even If I have no data for that?

实际上我正在尝试 python 中的 plot 密度 plot。 我想要 -1 到 1 的范围,但是我知道我的数据集中没有超出 -0.6 和 0.6 的值。 但是有什么方法可以让 plot 对于所有超出 -0.6 和 0.6 的值都为零。 简而言之,我想增加 plot 的范围以使其保持一致。

在此处输入图像描述

到目前为止,我正在使用此代码:

import pandas as pd
import matplotlib.pyplot as plt
#import seaborn as sns

data_Pre1 = pd.read_csv("new errors.csv")


for s in data_Pre1.columns:
    data_Pre1[s].plot(kind='density', sharey = True)
#plt.title("Disk Galaxies", fontsize = 18)
plt.xlabel("$E_i$", fontsize = 40)
plt.ylabel('Density', fontsize = 40)
plt.xlim(-1,1)
plt.legend(fontsize =25)
plt.xticks(size = 15)
plt.yticks(size = 15)
plt.show()

我的解决方案基于将ind参数传递给plot 它指定了估计的 PDF 的评估点。 我选择了700的点数,但您可以根据需要更改它,例如获得更平滑的曲线。 为了保持一致性,将相同的边框值传递给plt.xlim(...)

因此,将代码的相应行更改为:

minX, maxX = (-1.0, 1.0)
for s in data_Pre1.columns:
    data_Pre1[s].plot(kind='density', sharey=True, ind=np.linspace(minX, maxX, 700))
plt.xlim(minX, maxX)

其他可能的更正是,您可以为整个DataFrame 调用 plot,而不是显式循环遍历 DataFrame 的列:

data_Pre1.plot.density(ind=np.linspace(minX, maxX, 700))

编辑

ind指定的评估点不需要在整个x轴“需要”范围内均匀分布。

如果您确定通过绘图 function (您编写了-0.60.6 )“发现”了x轴的两个“限制”,则可以在此范围内将ind生成为密集间隔的点,然后:

  • 在它前面加上一个点 - 你的“想要的”下x限制,
  • append 它还有一个点 - 你的“想要的”上限x限制。

因此,您可以将代码更改为:

minX, maxX = (-1.0, 1.0)      # "Wanted" x axis limits
minSrc, maxSrc = (-0.6, 0.6)  # X axis limits "discovered" in your data
nPoints = 700                 # How many estimation points in the "discovered" range
ind = np.concatenate(([minX], np.linspace(minSrc, maxSrc, nPoints), [maxX]))
data_Pre1.plot.density(ind=ind)
plt.xlim(minX, maxX)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM