繁体   English   中英

通过Seaborn双重绘制X轴

[英]Dual Plotting X-Axis via Seaborn

编辑:我已经改写了这个问题,因为它不应该是应该的。 我有2个数据集(df3和df4分别具有总水头和效率的信息),并具有共同的独立变量(流速)。 我希望将它们都绘制在同一张图中,但是因变量具有不同的Y轴。 最初,我使用lmplot来实现多项式阶数功能,但这未能成功将两个图都显示在一个窗口中。 我希望将散点图和回归图组合成一个显示数据集之间重叠的图,以提供帮助。

我使用以下方法来生成图表:

ax2.scatter(df3['Flow_Rate_(KG/S)'], df2['Efficiency_%'], color='pink')
ax2.scatter(df4['Flow_Rate_(KG/S)'], df4['Total Head'], color='teal')
plt.show()

之所以要相互画线很重要,是因为要监视泵的性能,我们需要同时掌握泵的总扬程(M)和效率%,以了解性能之间的关系以及其后的性能下降。

我唯一想到的另一种方法是将多项式函数编写为要放入绘图函数的自变量中的方程式,然后将其绘制出来。 我还没有尝试过,但是想过要问一下在我走这条路之前是否还有其他选择。

感谢您的时间。

散点图

解决方案:对于感兴趣的人,我将.twinx()库与regplot一起使用,如下所示。

fig, ax = plt.subplots()
ax2 = ax.twinx() #This allows the common axes (flow rate) to be shared
sbn.regplot(x="Flow_Rate_(KG/S)", y="Total Head", data=df3, order=2, ax=ax)
sbn.regplot(x="Flow_Rate_(KG/S)", y="Efficiency_%", data=df4, order=2, 
ax=ax2)
ax2.set_ylim(0,1)#This is used to set the limit for efficiency. Without this being set, the curves do not line up.

让我尝试重述该问题:您有两个数据集,它们具有共同的独立值,但具有不同的依存值(分别为f(x),g(x))。 您希望将它们都绘制在同一张图中,但是相关值的范围完全不同。 因此,您希望有两个不同的y轴,每个数据集一个。 数据应绘制为散点图,并为每个数据显示一条回归线。 与了解或计算回归曲线本身相比,您对查看回归线更感兴趣。 因此,您尝试使用seaborn lmplot ,但无法将两个数据集都放入同一图中。

如果以上是您要解决的问题,则可能是以下答案。

lmplot本质regplot重新绘制图绘制到轴网格上。 因为这里不需要轴网格,所以使用regplot可能更有意义。 然后,您可以创建一个轴和一个双轴,并为每个轴绘制一个regplot。

import numpy as np; np.random.seed(42)
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df1 = pd.DataFrame({"x": np.sort(np.random.rand(30)),
                    "f": np.sort(np.random.rayleigh(size=30))})
df2 = pd.DataFrame({"x": np.sort(np.random.rand(30)),
                    "g": 500-0.1*np.sort(np.random.rayleigh(20,size=30))**2})

fig, ax = plt.subplots()
ax2 = ax.twinx()
sns.regplot(x="x", y="f", data=df1, order=2, ax=ax)
sns.regplot(x="x", y="g", data=df2, order=2, ax=ax2)


ax2.legend(handles=[a.lines[0] for a in [ax,ax2]], 
           labels=["f", "g"])
plt.show()

在此处输入图片说明

暂无
暂无

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

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