【问题标题】:Exclude grid lines from boundaries of plot in python?从python中的绘图边界排除网格线?
【发布时间】:2019-10-15 11:53:47
【问题描述】:

我正在寻找一种从绘图轴上删除网格线的方法,但不幸的是,我还没有找到解决这个问题的方法,也没有在其他任何地方找到它。

有没有办法去除某些网格线或选择绘制哪些网格线而不必依赖自动功能?

我已经编写了一个快速示例,输出了一个绘图以用于下面的说明,并且很乐意提供任何帮助。

import matplotlib.pyplot as plt
import numpy as np

def linear(x, a, b):
    return a*x+b

x = np.linspace(0, 1, 20)
y = linear(x, a=1, b=2)

fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(10, 6))

ax.plot(x, y, color='darkred')
ax.set_xlim(0, 1)
ax.set_ylim(2, 3)
ax.grid(which='major', axis='y', linestyle='--', color='grey', linewidth=3)

plt.savefig("Testplot.pdf", format='pdf')

【问题讨论】:

  • 我想一定有一个聪明的方法来删除边界2.03.0的网格线。但是,我认为没有一个可以特别删除特定行。您对水平线和轴刻度定位的实现感兴趣吗?
  • 是的,这对我来说听起来不错。对于刻度,我使用 xaxis.set_tick_paramsset_xticksset_xticklabels,但我不知道如何为网格线实现所需的输出。
  • 看我的提议。请注意,您可以定义要在绘图的一部分上绘制的水平线,例如在x1x2 之间。

标签: python matplotlib grid gridlines


【解决方案1】:

主要网格线出现在主要刻度的位置。您可以将任何单个网格线设置为不可见。例如。关闭第五条网格线,

ax.yaxis.get_major_ticks()[5].gridline.set_visible(False)

【讨论】:

    【解决方案2】:

    这是一个带有刻度线和水平线的命题。这个想法是指定刻度线(不是真的需要,但为什么不需要),然后在您想要网格的位置绘制水平虚线。

    import matplotlib.pyplot as plt
    import numpy as np
    
    def linear(x, a, b):
        return a*x+b
    
    x = np.linspace(0, 1, 20)
    y = linear(x, a=1, b=2)
    
    fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(10, 6))
    
    ax.plot(x, y, color='darkred')
    ax.set_xlim(0, 1)
    ax.set_ylim(2, 3)
    
    yticks = np.arange(2, 3, 0.2)
    grid_lines = np.arange(2.2, 3, 0.2)
    
    ax.set_yticks(yticks)
    
    for grid in grid_lines:
        ax.axhline(grid, linestyle='--', color='grey', linewidth=3)
    

    输出:

    为什么我添加了yticks?那么你可以设计一个函数来输入yticks 并相应地返回网格线的位置。我认为这可能会很方便,具体取决于您的需要。祝你好运!

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      相关资源
      最近更新 更多