¿Cómo puedo cambiar el eje x en matplotlib para que no haya espacios en blanco?

Así que actualmente estoy aprendiendo cómo importar datos y trabajar con ellos en matplotlib y estoy teniendo problemas incluso aunque tenga el código exacto del libro.

introduzca la descripción de la imagen aquí

Así es como se ve la gráfica, pero mi pregunta es cómo puedo obtenerla donde no haya espacios en blanco entre el inicio y el final del eje x.

Aquí está el código:

import csv from matplotlib import pyplot as plt from datetime import datetime # Get dates and high temperatures from file. filename = 'sitka_weather_07-2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) #for index, column_header in enumerate(header_row): #print(index, column_header) dates, highs = [], [] for row in reader: current_date = datetime.strptime(row[0], "%Y-%m-%d") dates.append(current_date) high = int(row[1]) highs.append(high) # Plot data. fig = plt.figure(dpi=128, figsize=(10,6)) plt.plot(dates, highs, c='red') # Format plot. plt.title("Daily high temperatures, July 2014", fontsize=24) plt.xlabel('', fontsize=16) fig.autofmt_xdate() plt.ylabel("Temperature (F)", fontsize=16) plt.tick_params(axis='both', which='major', labelsize=16) plt.show() 

En matplotlib 2.x hay un margen automático establecido en los bordes, que garantiza que los datos se ajusten bien dentro de las espinas del eje. En este caso, tal margen es probablemente deseado en el eje y. Por defecto, se establece en 0.05 en unidades de rango de eje. Para establecer el margen a 0 en el eje x, use

 plt.margins(x=0) 

o

 ax.margins(x=0) 

Dependiendo del contexto. Véase también la documentación .

En caso de que desee deshacerse del margen en todo el script, puede utilizar

 plt.rcParams['axes.xmargin'] = 0 

al comienzo de su guión (lo mismo para y por supuesto). Si desea deshacerse del margen por completo y para siempre, es posible que desee cambiar la línea correspondiente en el archivo matplotlib rc .


Como alternativa a cambiar los márgenes, use plt.xlim(..) o ax.set_xlim(..) para establecer manualmente los límites de los ejes de modo que no quede espacio en blanco.