Reputation: 809
I have the following formula:
import matplotlib.pyplot as plt
import mplleaflet
import pandas as pd
import numpy as np
ax = plt.gca()
datamax.plot(kind='line',x='Date',y='Data_Value',color='red',ax=ax)
datamin.plot(kind='line',x='Date',y='Data_Value', color='blue',ax=ax)
plt.ylabel("Temperature (degrees C)",color='navy')
plt.xlabel("Date",color='navy')
plt.title('Record high and low temperatures by day (2005-2014)', alpha=1.0,color='brown')
ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.15),
fancybox=False,labels=['Record high','Record low'])
#ax.set_xticks(ax.get_xticks()[::2])
plt.show()
However, I want to change the spacing of the tick labels so that either all of the tick labels are on the X-axis (they are currently too crammed and overlapping!).
Another possibility would be to display only each year on the X-axis (2005-2014, thus with 10 axis labels).
My output currently looks like this:
The dataframe datamax looks like this:
Date ID Element Data_Value
0 2005-01-01 USW00094889 TMAX 156
1 2005-01-02 USW00094889 TMAX 139
2 2005-01-03 USW00094889 TMAX 133
3 2005-01-04 USW00094889 TMAX 39
4 2005-01-05 USW00094889 TMAX 33
5 2005-01-06 USW00094889 TMAX 0
6 2005-01-07 USW00094889 TMAX 6
7 2005-01-08 USW00094889 TMAX 17
8 2005-01-09 USW00094889 TMAX 28
9 2005-01-10 USW00094889 TMAX 44
10 2005-01-11 USW00094889 TMAX 44
11 2005-01-12 USW00094889 TMAX 139
12 2005-01-13 USW00094889 TMAX 161
13 2005-01-14 USW00094889 TMAX 150
14 2005-01-15 USW00094889 TMAX -33
15 2005-01-16 USW00094889 TMAX -33
16 2005-01-17 USW00094889 TMAX -50
17 2005-01-18 USW00094889 TMAX -33
18 2005-01-19 USW00094889 TMAX 11
19 2005-01-20 USW00094889 TMAX 11
20 2005-01-21 USW00094889 TMAX -39
21 2005-01-22 USW00094889 TMAX -72
22 2005-01-23 USW00094889 TMAX -44
23 2005-01-24 USW00094889 TMAX 11
24 2005-01-25 USW00094889 TMAX 28
25 2005-01-26 USW00094889 TMAX 28
26 2005-01-27 USW00094889 TMAX 6
27 2005-01-28 USW00094889 TMAX -11
28 2005-01-29 USW00094889 TMAX 17
29 2005-01-30 USW00094889 TMAX 28
... ... ... ... ...
3603 2014-11-13 USW00094889 TMAX 39
3604 2014-11-14 USW00094889 TMAX 33
3605 2014-11-15 USW00094889 TMAX 28
3606 2014-11-16 USW00094889 TMAX 28
3607 2014-11-17 USW00094889 TMAX 17
3608 2014-11-18 USW00094889 TMAX 11
3609 2014-11-19 USW00094889 TMAX 11
3610 2014-11-20 USW00094889 TMAX 6
3611 2014-11-21 USW00094889 TMAX -10
3612 2014-11-22 USW00094889 TMAX 106
3613 2014-11-23 USW00094889 TMAX 156
3614 2014-11-24 USW00094889 TMAX 172
3615 2014-11-25 USW00094889 TMAX 172
3616 2014-11-26 USW00094889 TMAX 28
3617 2014-11-27 USW00094889 TMAX 39
3618 2014-11-28 USW00094889 TMAX 22
3619 2014-11-29 USW00094889 TMAX 117
3620 2014-11-30 USW00094889 TMAX 178
3621 2014-12-01 USW00094889 TMAX 172
3622 2014-12-02 USW00094889 TMAX 33
3623 2014-12-03 USW00094889 TMAX 61
3624 2014-12-04 USW00094889 TMAX 50
3625 2014-12-05 USW00094889 TMAX 50
3626 2014-12-06 USW00094889 TMAX 67
3627 2014-12-07 USW00094889 TMAX 67
3628 2014-12-08 USW00094889 TMAX 72
3629 2014-12-09 USW00094889 TMAX 56
3630 2014-12-10 USW00094889 TMAX 50
3631 2014-12-11 USW00094889 TMAX 61
3632 2014-12-12 USW00094889 TMAX 50
[3631 rows x 4 columns]
And the dataframe datamin like this:
Date ID Element Data_Value
0 2005-01-01 USC00200032 TMIN -56
1 2005-01-02 USC00200032 TMIN -56
2 2005-01-03 USC00200032 TMIN 0
3 2005-01-04 USC00200032 TMIN -39
4 2005-01-05 USC00200032 TMIN -94
5 2005-01-06 USC00200032 TMIN -106
6 2005-01-07 USC00200032 TMIN -111
7 2005-01-08 USC00200032 TMIN -100
8 2005-01-09 USC00200032 TMIN -67
9 2005-01-10 USC00200032 TMIN -56
10 2005-01-11 USC00200032 TMIN -22
11 2005-01-12 USC00200032 TMIN -17
12 2005-01-13 USC00200032 TMIN -83
13 2005-01-14 USC00200032 TMIN -128
14 2005-01-15 USC00200032 TMIN -144
15 2005-01-16 USC00200032 TMIN -150
16 2005-01-17 USC00200032 TMIN -189
17 2005-01-18 USC00200032 TMIN -217
18 2005-01-19 USC00200228 TMIN -300
19 2005-01-20 USC00200032 TMIN -156
20 2005-01-21 USC00200032 TMIN -178
21 2005-01-22 USC00200032 TMIN -178
22 2005-01-23 USC00200032 TMIN -250
23 2005-01-24 USC00200032 TMIN -267
24 2005-01-25 USC00200032 TMIN -228
25 2005-01-26 USC00200032 TMIN -206
26 2005-01-27 USC00200032 TMIN -239
27 2005-01-28 USC00200032 TMIN -250
28 2005-01-29 USC00200032 TMIN -222
29 2005-01-30 USC00200228 TMIN -217
... ... ... ... ...
3603 2014-11-13 USC00200032 TMIN -71
3604 2014-11-14 USC00200032 TMIN -78
3605 2014-11-15 USC00200032 TMIN -94
3606 2014-11-16 USC00200032 TMIN -72
3607 2014-11-17 USC00200032 TMIN -106
3608 2014-11-18 USC00200032 TMIN -144
3609 2014-11-19 USC00200032 TMIN -128
3610 2014-11-20 USC00200032 TMIN -122
3611 2014-11-21 USC00200032 TMIN -182
3612 2014-11-22 USC00200032 TMIN -172
3613 2014-11-23 USC00200032 TMIN -100
3614 2014-11-24 USC00200032 TMIN -5
3615 2014-11-25 USC00200032 TMIN -33
3616 2014-11-26 USC00200032 TMIN -67
3617 2014-11-27 USC00200032 TMIN -82
3618 2014-11-28 USC00200032 TMIN -133
3619 2014-11-29 USC00200032 TMIN -106
3620 2014-11-30 USC00200032 TMIN -56
3621 2014-12-01 USC00200032 TMIN -88
3622 2014-12-02 USC00200032 TMIN -99
3623 2014-12-03 USC00200032 TMIN -71
3624 2014-12-04 USC00200032 TMIN -77
3625 2014-12-05 USC00200032 TMIN -61
3626 2014-12-06 USC00200032 TMIN -50
3627 2014-12-07 USC00200032 TMIN -78
3628 2014-12-08 USC00200032 TMIN -78
3629 2014-12-09 USC00200032 TMIN -39
3630 2014-12-10 USC00200032 TMIN -72
3631 2014-12-11 USC00200032 TMIN -88
3632 2014-12-12 USC00200032 TMIN -78
[3631 rows x 4 columns]
Upvotes: 1
Views: 1710
Reputation: 923
Option 1: rotate the labels. In this way, you "gain" some space.
import matplotlib.pyplot as plt
import numpy as np
x=["Monday","Tuesday","Wednesday","Thursday","Fryday","Saturday","Sunday"]
y=np.linspace(1,100,7)
fig,ax = plt.subplots()
ax.plot(x,y)
ax.tick_params(axis='x', rotation=45)
Option 2: personalize your labels.
ax.plot(x,y)
ax.set_xticklabels(['M','T','W','R','F','S','N'])
fig.savefig("/Users/Alessandro/Desktop/2.png")
Option 3: diminish label frequency.
ax.plot(x,y)
ax.set_xticks([0,2,4,6])
ax.set_xticklabels(['M','W','F','N'])
Option 4: diminish ticklabel size.
ax.plot(x,y)
ax.xaxis.set_tick_params(labelsize=8)
Option 5: enlarge figure size.
fig,ax = plt.subplots(figsize=(8,4))
ax.plot(x,y)
Upvotes: 2
Reputation: 1394
x = np.arange(0, 10,0.555)
y = np.sin(x)
plt.xticks(x, x)
plt.plot(x,y)
plt.figure()
plt.plot(x,y)
short_xticks = [f'{i:.1f}' for i in x]
plt.xticks(x, short_xticks)
fig, ax = plt.subplots(figsize=(15,5))
plt.xticks(x)
plt.plot(x,y)
plt.figure()
plt.xticks(x, rotation=90)
plt.plot(x,y)
plt.figure()
plt.xticks(x[::2])
plt.plot(x,y)
plt.show()
Upvotes: 0