python - seaborn 与 pandas 中的 y 轴缩放

标签 python pandas seaborn

我正在使用 pandas 数据框绘制散点图。这工作正常,但我想使用 Seaborn 主题和特殊功能。当我调用seaborn绘制相同的数据点时,y轴几乎保持不可见。 X 轴值的范围为 5000-15000,而 y 轴值的范围为 [-6:6]*10^-7

如果我将 y 轴值乘以 10^6,它们会正确显示,但使用 seaborn 绘制时的实际值在生成的 seaborn 中仍然不可见/无法区分阴谋。

如何seaborn使 y 轴值在结果图中自动缩放?

此外,有些行甚至包含 NaN,但在这种情况下,如何在绘图时忽略它,而不需要手动清除包含 NaN 的行。

下面是我用来绘制的代码。

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


df = pd.read_csv("datascale.csv")
subdf = df.loc[(df.types == "easy") & (df.weight > 1300), ]

subdf = subdf.iloc[1:61, ]
subdf.drop(subdf.index[[25]], inplace=True) #row containing NaN

subdf.plot(x='length', y='speed', style='s') #scales y-axis correctly

sns.lmplot("length", "speed", data=subdf, fit_reg=True, lowess=True) #doesn't scale y-axis properly

# multiplying by 10^6 displays the plot correctly, in matplotlib
plt.scatter(subdf['length'], 10**6*subdf['speed'])

最佳答案

奇怪的是seaborn没有正确缩放轴。尽管如此,您可以纠正此行为。首先,获取对绘图的轴对象的引用:

lm = sns.lmplot("length", "speed", data=subdf, fit_reg=True)

之后您可以手动设置 y 轴限制:

lm.axes[0,0].set_ylim(min(subdf.speed), max(subdf.speed))

结果应该是这样的:

enter image description here

示例 Jupyter 笔记本 here .

关于python - seaborn 与 pandas 中的 y 轴缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36595961/

相关文章:

python - 无法打开最近创建的云功能进行编辑/更新,但功能仍然触发成功

python - 适用于 python 的 Google Api 客户端库不会在文件 : list method with query 中返回 nextPageToken

python - 填补 MultiIndex Pandas Dataframe 中的日期空白

python - 使用辅助轴线图制作分类或分组条形图

python - 如何使用 seaborn 在 x 轴上绘制 int 到 datetime?

python - Pip 安装在 Windows 上引发 UnicodeDecodeError。使固定?

python - pandas dflocate仅保留第一项

python - 带有字符串列名的 DataFrame

python - 传输错误 : TransportError(503, 'search_phase_execution_exception' )

python - 从 DateTime 数据框列中提取时间并使用线图绘制每小时时间