Getting vertical gridlines to appear in line plot in matplotlib

前端 未结 6 1621
渐次进展
渐次进展 2020-12-01 05:41

I want to get both horizontal and vertical grid lines on my plot but only the horizontal grid lines are appearing by default. I am using a pandas.DataFrame from

相关标签:
6条回答
  • 2020-12-01 06:18

    You may need to give boolean arg in your calls, e.g. use ax.yaxis.grid(True) instead of ax.yaxis.grid(). Additionally, since you are using both of them you can combine into ax.grid, which works on both, rather than doing it once for each dimension.

    ax = plt.gca()
    ax.grid(True)
    

    That should sort you out.

    0 讨论(0)
  • 2020-12-01 06:18

    According to matplotlib documentation, The signature of the Axes class grid() method is as follows:

    Axes.grid(b=None, which='major', axis='both', **kwargs)
    Turn the axes grids on or off.

    which can be ‘major’ (default), ‘minor’, or ‘both’ to control whether major tick grids, minor tick grids, or both are affected.

    axis can be ‘both’ (default), ‘x’, or ‘y’ to control which set of gridlines are drawn.

    So in order to show grid lines for both the x axis and y axis, we can use the the following code:

    ax = plt.gca()
    ax.grid(which='major', axis='both', linestyle='--')
    

    This method gives us finer control over what to show for grid lines.

    0 讨论(0)
  • 2020-12-01 06:19

    plt.gca().xaxis.grid(True) proved to be the solution for me

    0 讨论(0)
  • 2020-12-01 06:24

    maybe this can solve the problem: matplotlib, define size of a grid on a plot

    ax.grid(True, which='both')
    

    The truth is that the grid is working, but there's only one v-grid in 00:00 and no grid in others. I meet the same problem that there's only one grid in Nov 1 among many days.

    0 讨论(0)
  • 2020-12-01 06:32

    Short answer (read below for more info):

    ax.grid(axis='both', which='both')
    

    What you do is correct and it should work.

    However, since the X axis in your example is a DateTime axis the Major tick-marks (most probably) are appearing only at the both ends of the X axis. The other visible tick-marks are Minor tick-marks.

    The ax.grid() method, by default, draws grid lines on Major tick-marks. Therefore, nothing appears in your plot.

    Use the code below to highlight the tick-marks. Majors will be Blue while Minors are Red.

    ax.tick_params(which='both', width=3)
    ax.tick_params(which='major', length=20, color='b')
    ax.tick_params(which='minor', length=10, color='r')
    

    Now to force the grid lines to be appear also on the Minor tick-marks, pass the which='minor' to the method:

    ax.grid(b=True, which='minor', axis='x', color='#000000', linestyle='--')
    

    or simply use which='both' to draw both Major and Minor grid lines. And this a more elegant grid line:

    ax.grid(b=True, which='minor', axis='both', color='#888888', linestyle='--')
    ax.grid(b=True, which='major', axis='both', color='#000000', linestyle='-')
    
    0 讨论(0)
  • 2020-12-01 06:33

    For only horizontal lines

    ax = plt.axes()        
    ax.yaxis.grid() # horizontal lines
    

    This worked

    0 讨论(0)
提交回复
热议问题