如何删除seaborn散点图顶部和底部的空白

问题描述 投票:0回答:2

y 轴上有许多刻度的散点图在顶部和底部有很大的空白,正如您通过网格线看到的那样。如何删除seaborn散点图顶部和底部的空白?

scatterplot

最小工作示例的代码:

import matplotlib.pyplot as plt
import seaborn as sns

data = sns.load_dataset("car_crashes")

plt.figure(figsize=(5, 15))
sns.set_style("whitegrid")
sns.scatterplot(
    data=data,
    x='alcohol',
    y='abbrev',
    size='ins_losses',
    legend=False,
)

plt.show()
python matplotlib seaborn scatter-plot
2个回答
2
投票

如果你切换到面向对象的绘图风格,通过

ax
,你可以轻松地到达刻度位置。然后您可以将两端的间距调整为您喜欢的任何值,例如通过更改下面代码中的
2
。我认为这样做可以减少猜测,因为您正在调整刻度间隔的一定比例。无论您绘制多少行,您都会得到合理的结果。

例如,我将采用以下方法(使用较少的状态使绘图更小):

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("whitegrid")

# Get some example data.
data = sns.load_dataset("car_crashes")

# Make the plot.
fig, ax = plt.subplots(figsize=(5, 5))
sc = sns.scatterplot(data=data[:15],
                     x='alcohol',
                     y='abbrev',
                     size='ins_losses',
                     legend=False,
                     ax=ax,
                    )

# Get the first two and last y-tick positions.
miny, nexty, *_, maxy = ax.get_yticks()

# Compute half the y-tick interval (for example).
eps = (nexty - miny) / 2  # <-- Your choice.

# Adjust the limits.
ax.set_ylim(maxy+eps, miny-eps)

plt.show()

这给出:

enter image description here


0
投票
plt.margins(0.015, tight=True)

以上对我来说非常有效!尝试一下。 这会删除图表中的空白/边距。 请注意,该数字不必是 0.015,因此请根据您的需要进行调整。不客气。

© www.soinside.com 2019 - 2024. All rights reserved.