![](/img/trans.png)
[英]How can I plot a pandas dataframe and have groupings in the x-axis?
[英]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.6和0.6 )“发现”了x轴的两个“限制”,则可以仅在此范围内将ind生成为密集间隔的点,然后:
因此,您可以将代码更改为:
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.