Así que actualmente estoy aprendiendo cómo importar datos y trabajar con ellos en matplotlib y tengo problemas aunque tengo el código exacto del libro.
Así es como se ve la trama, pero mi pregunta es cómo puedo obtenerla donde no hay un espacio 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()
Hay un margen automático establecido en los bordes, lo que garantiza que los datos encajen bien dentro de los lomos del eje. En este caso, tal margen probablemente se desee en el eje y. De forma predeterminada, se establece en 0.05
en unidades de amplitud de eje.
Para establecer el margen en 0
en el eje x, utilice
plt.margins(x=0)
o
ax.margins(x=0)
dependiendo del contexto. Consulte también la documentación .
En caso de que quiera deshacerse del margen en todo el script, puede usar
plt.rcParams['axes.xmargin'] = 0
al comienzo de su secuencia de comandos (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 rc de matplotlib :
axes.xmargin : 0 axes.ymargin : 0
import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset('tips') fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4)) tips.plot(ax=ax1, title='Default Margin') tips.plot(ax=ax2, title='Margins: x=0') ax2.margins(x=0)
Alternativamente, use plt.xlim(..)
o ax.set_xlim(..)
para establecer manualmente los límites de los ejes de modo que no queden espacios en blanco.
Si solo desea eliminar el margen de un lado pero no del otro, por ejemplo, eliminar el margen de la derecha pero no de la izquierda, puede usar set_xlim()
en un objeto de ejes matplotlib.
import seaborn as sns import matplotlib.pyplot as plt import math max_x_value = 100 x_values = [i for i in range (1, max_x_value + 1)] y_values = [math.log(i) for i in x_values] fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4)) sn.lineplot(ax=ax1, x=x_values, y=y_values) sn.lineplot(ax=ax2, x=x_values, y=y_values) ax2.set_xlim(-5, max_x_value) # tune the -5 to your needs