【问题标题】:How to get rid of grid lines when plotting with Seaborn + Pandas with secondary_y使用带有secondary_y的Seaborn + Pandas绘图时如何摆脱网格线
【发布时间】:2015-01-08 04:52:38
【问题描述】:

我正在使用导入 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)

【问题讨论】:

  • 你使用什么颜色偏好?图片不是matplotlib默认的。我敢打赌这就是造成问题的原因
  • @DataSwede 对我来说它看起来像是默认的熊猫方案......而且我也得到了这些行
  • 我的答案是否适用于 seaborn?没用过,不知道有没有用
  • 是的,它适用于 seaborn。

标签: python matplotlib pandas plot seaborn


【解决方案1】:

您可以在绘图后取出 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)

【讨论】:

  • ax.grid(False) 是唯一对我有用的东西。谢谢。
  • 这是最好的答案,因为您可以将它与 seaborn、pandas 和 matplotlib 等一起使用。只需在您需要的任何轴上调用ax.grid(False)
【解决方案2】:
sns.set_style("whitegrid", {'axes.grid' : False})

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

有关这方面的精彩文章,请参阅this site

【讨论】:

    【解决方案3】:

    问题在于使用默认的 pandas 格式(或您选择的任何格式)。不确定幕后是如何工作的,但这些参数胜过您在绘图函数中传递的格式。你可以看到他们的名单here in the mpl_style dictionary

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

    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'])
    

    【讨论】:

    • 我不知道我是否应该将此标记为已接受的答案,因为它确实有效,但如果有一种方法可以在 seaborn 中“本地”执行此操作,那就太好了。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      你可以设置:

      sns.set_style("ticks")

      恢复正常。

      【讨论】:

        猜你喜欢
        • 2021-02-28
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        • 2019-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多