Barzi2001
Barzi2001

Reputation: 1766

Set xticks visible in when plotting using pandas

Consider the following snippet

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

data = np.random.rand(10,5)
cols = ["a","b","c","d","e"]
df = pd.DataFrame(data=data, columns = cols)
df.index.name="Time (s)"

fig,axes = plt.subplots(3,2,sharex=True, squeeze=False)
axes = axes.T.flat
axes[5].remove()

df.plot(subplots=True,grid=True,legend=True,ax = axes[0:5])

that produces the following plot

Plot I wish to show the xticks in the subplots where they are missing as I wrote in red with reference to the above picture.

I wish to show only the xticks where I marked in red, not the labels. The labels are fine where they currently are and shall be kept there.

After some search, I tried with

for ax in axes:
     ax.tick_params(axis="x")

and

for ax in axes:
    ax.spines.set(visible=True)

but with no success.

Any hints?

EDIT: As someone kindly suggested, if I set sharex=False, then when I horizontally zoom on one axes I will not have the same zoom effect on the other axes and this is not what I want. What I want is to: a) show the xticks in all axes, b) when I horizontally zoom on one axes all the other axes are horizontally zoomed of the same amount.

Upvotes: 0

Views: 81

Answers (1)

Timeless
Timeless

Reputation: 37787

You need to turn off sharing x properties by setting sharex=False (which is the default value by the way in matplotlib.pyplot.subplots):

Replace this:

fig,axes = plt.subplots(3,2,sharex=True, squeeze=False)

By this:

fig,axes = plt.subplots(3,2, squeeze=False)

# Output:

enter image description here

Upvotes: 1

Related Questions