The Nightman
The Nightman

Reputation: 5759

pandas plotting skipping xtick labels

I am trying to display two pandas Series objects together, which works, except all the labels are not displayed.

I am trying to plot the two Series together like this:

plt.figure()
sns.set_style('ticks')
ts86['Gene'].value_counts().plot(kind='area')
l97['Gene'].value_counts().plot(kind='area')
sns.despine(offset=10)

But only one of the indexes is displayed.

enter image description here

Here are the two Series that I have:

one

TIIIh     25
TET2-2    24
IDH2      15
TIIIa     14
TIIIb     12
TIIIj     11
TIIIp      9
p53-1      9
SF3B1      8
TIIIe      8
KRAS-1     7
TIIIo      6
TIIId      6
TET2-1     6
GATA1      5
p53-3      5
HRAS       5
NRAS-2     4
IDH1       4
TIIIq      4
JAK2       4
TIIIc      4
TIIIf      3
TIIIg      3
TIIIm      3
KRAS-2     3
p53-2      3
TIIIk      3
TIIIn      2
DNMT3a     1

and

two

p53-1     17
p53-2      2
NRAS-2     2
p53-3      1
KRAS-2     1

Upvotes: 2

Views: 765

Answers (1)

gyoza
gyoza

Reputation: 2152

Your output graph shows value_counts of 2 dataframes but obviously the index orders are no longer the same, so there is no way to show xticks at this point (e.g. highest count in df1 is TIIIh while that of df2 is p53-1 and you are trying to plot them together by preserving the order).

Let's simply merge df1 and df2 first (I named TIIIh and so on as id for merge key):

combi = pd.merge(ts86, l97, on='id', how='left')
combi = combi.set_index('id')

And then, plot each column and show all xticks:

ax = combi['Gene_x'].plot(kind='area', figsize=(10, 3))
combi['Gene_y'].plot(kind='area', figsize=(10, 3))
ax.set_xticks(range(combi.shape[0]))
ax.set_xticklabels(combi.index, rotation=90)

Now you get this:

enter image description here

Hope this helps.

Upvotes: 3

Related Questions