即使我没有相关数据,我如何增加概率密度图中X轴的范围?

2024-06-13 15:07:05 发布

您现在位置:Python中文网/ 问答频道 /正文

实际上,我正在尝试用python绘制密度图。我希望范围为-1到1,但是我知道我的数据集中没有超过-0.6和0.6的值。但是有没有什么方法可以让我把-0.6和0.6之外的所有值都画成零呢。简言之,我想扩大我的情节范围,使其一致

enter image description here

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

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()

Tags: csv数据方法代码importdatasizeas
1条回答
网友
1楼 · 发布于 2024-06-13 15:07:05

我的解决方案基于将ind参数传递到绘图。 它为估计的PDF指定评估点。 作为点数,我选择了700,但您可以根据自己的意愿进行更改, e、 g.获得更平滑的曲线。 为了保持一致性,只将相同的边界值传递给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)

另一个可能的修正是,不是在列上显式循环 对于数据帧,您可以调用整个数据帧的绘图:

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

编辑

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

如果您确定x轴的两个“极限”由 绘图功能(您编写了-0.60.6),您可以生成ind 仅作为此范围内密集间隔的点,然后:

  • 在它前面加上一个单点点-你的“想要”下限x限制
  • 附加一个单点-你的“通缉”上限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)

相关问题 更多 >