2017-04-08 8 views
3

Also habe ich seit einer Weile auf SE gesucht und nichts, was ich finde funktioniert ..... Ich habe einen Datenrahmen von Min und Max Temperaturen im Laufe der Jahre.Wie ändere ich die Anzahl der Ticks?

plt.figure() 
plt.gca().fill_between(range(len(Tmin)), Tmin, Tmax, facecolor='blue', alpha=0.25) 
plt.plot(range(365), Tmin, 'b', range(365), Tmax, 'r') 
plt.locator_params(axis = 'x', nbins = 12) 

x = plt.gca().xaxis 
m = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'] 
ax = plt.gca() 
ax.locator_params(axis = 'x', nbins = 12) 
ax.set_xticklabels(m) 
ax.set_ylabel('T(C)') 
ax.set_title('Temperature') 
plt.xlim([0,365]) 
# ax.set_xticks(np.linspace(0,1,12)) 
plt.show() 

Es gibt immer noch die gleiche Anzahl von Zecken wie in der ursprünglichen Handlung, in der x-Achse ist [0, 50, 100, ..., 350]

enter image description here

Antwort

2

können Sie Setzen Sie die Ticks manuell, indem Sie die Tage seit dem 1. Januar für jeden Monat erhalten.

import datetime as dt 
import numpy as np 
import matplotlib.pyplot as plt 

x = np.arange(365) 
y = 100 + 250*np.sin(9*(x-50)/720) + 80*np.random.rand(365) 

m = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'] 
# get the start day for each month as an index 
ticks = [(dt.date(2016,m,1)-d0).days for m in range(1,13)] 

fig,ax = plt.subplots(1,1) 
ax.plot(x,y) 
ax.set_xticks(ticks) 
ax.set_xticklabels(m) 
ax.set_xlim(-3,365) 
plt.show() 

enter image description here

+0

Nice! Danke :) Du würdest zufällig auch wissen, warum ich meine Legende nicht zufällig bewegen kann? : Raksha

Verwandte Themen