almegdadi
almegdadi

Reputation: 79

multiple axis not starting at zero

I Darw a graph with mutliple axix, have several questios:

  1. why the left y-axsis is not satrting from zero. (I mean the zero point is not at the begining of the y-axix).

  2. I only want major grid for the x-axis (a major grid line for each week) but the code add a mjor grid for the y-axix also.

  3. How can i add minor grid for y-axix (the red one (ax2))

  4. i want to change the color for the x-axis labels (Dates) color to black

    import matplotlib.pyplot as plt
    Hits= pd.read_excel("stackoverflow_example.xlsx", sheet_name="data")
    
    fig=plt.figure(figsize=(20,10))
    
    ax=fig.add_subplot(111, label="1")
    ax2=fig.add_subplot(111, label="2", frame_on=False)
    
    ax.bar(Hits['Date'], Hits['Total'], width=0.35, color="b" )
    ax.set_ylabel('Hits', color="b",size=16)
    ax.yaxis.set_label_position('right') 
    ax.tick_params(axis='y', colors="b")
    
    ax.tick_params(axis='x', colors="b", rotation=45)
    ax.yaxis.tick_right()
    
    ax2.plot(Hits['weeks'], Hits['Cases'], linewidth= 3.5, color="Red")
    ax2.set_ylabel("Cases", color="Red",size=16)
    ax2.tick_params(axis='y', colors="Red", size=16)
    ax2.xaxis.set_ticks_position('top')
    
    major_ticks = np.arange(0, 10, 1)
    ax.set_xticks(major_ticks)
    ax.grid(which='major', alpha=0.5)
    
    plt.show()
    

My data

[Data

Graph:

enter image description here

Upvotes: 0

Views: 1146

Answers (1)

r-beginners
r-beginners

Reputation: 35275

If you want to start from zero, you can do that with 'ax2.set_ylim()'. After that, you can specify the axes for the grid. If the color is black, you can set color='k'.

import matplotlib.pyplot as plt

fig=plt.figure(figsize=(20,10))

ax=fig.add_subplot(111, label="1")
ax2=fig.add_subplot(111, label="2", frame_on=False)

ax.bar(Hits['Date'], Hits['Total'], width=0.35, color="b" )
ax.set_ylabel('Hits', color="b",size=16)
ax.yaxis.set_label_position('right') 
ax.tick_params(axis='y', colors="b")

ax.tick_params(axis='x', colors="k", rotation=45)
ax.yaxis.tick_right()

ax2.plot(Hits['weeks'], Hits['Cases'], linewidth= 3.5, color="Red")
ax2.set_ylabel("Cases", color="Red",size=16)
ax2.tick_params(axis='y', colors="Red", size=16)
ax2.xaxis.set_ticks_position('top')
ax2.set_ylim(0,62) # update
major_ticks = np.arange(0, 10, 1)
ax.set_xticks(major_ticks)
ax.grid(which='major', axis='x', alpha=0.5) #update
ax2.grid(which='major', axis='y', alpha=0.5) # update

plt.show()

enter image description here

Upvotes: 1

Related Questions