44

我正在使用导入 seaborn 的 Pandas 绘制两个数据系列。理想情况下,我希望左右 y 轴之间共享水平网格线,但我的印象是这很难做到。

作为妥协,我想一起删除网格线。但是,下面的代码会为辅助 y 轴生成水平网格线。

import pandas as pd
import numpy as np
import seaborn as sns


data = pd.DataFrame(np.cumsum(np.random.normal(size=(100,2)),axis=0),columns=['A','B'])
data.plot(secondary_y=['B'],grid=False)

我想摆脱的网格线

4

5 回答 5

55

您可以在绘制后取出 Axes 对象并.grid(False)在两个轴上执行。

# Gets the axes object out after plotting
ax = data.plot(...)

# Turns off grid on the left Axis.
ax.grid(False)

# Turns off grid on the secondary (right) Axis.
ax.right_ax.grid(False)
于 2016-02-17T10:19:56.887 回答
45
sns.set_style("whitegrid", {'axes.grid' : False})

请注意,样式可以是您选择的任何有效样式。

有关这方面的精彩文章,请参阅此站点

于 2015-11-08T03:04:47.447 回答
10

问题在于使用默认的 pandas 格式(或您选择的任何格式)。不确定幕后是如何工作的,但这些参数胜过您在绘图函数中传递的格式。您可以在 mpl_style 字典中查看它们的列表

为了绕过它,您可以这样做:

import pandas as pd
pd.options.display.mpl_style = 'default'
new_style = {'grid': False}
matplotlib.rc('axes', **new_style)
data = pd.DataFrame(np.cumsum(np.random.normal(size=(100,2)),axis=0),columns=['A','B'])
data.plot(secondary_y=['B'])

在此处输入图像描述

于 2014-11-11T19:42:20.860 回答
5

这感觉就像 Pandas 中的错误行为,并不是所有的关键字参数都传递给两个 Axes。但是如果你想在 seaborn 中默认关闭网格,你只需要调用sns.set_style("dark"). 如果您只想更改一个图形的默认值,也可以sns.axes_style在语句中使用。with

于 2014-11-11T21:40:14.263 回答
4

你可以设置:

sns.set_style("滴答声")

它恢复正常。

于 2021-05-07T22:22:41.630 回答