Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

323
Views
el eje x se transforma en flotadores

Estoy tratando de trazar mis datos agrupados por año y, para cada año, quiero contar la cantidad de usuarios. A continuación, acabo de transformar la columna de fecha de flotante a entero.

esta es mi parcela ingrese la descripción de la imagen aquí

Si ve el eje x, mi indicador de año parece haberse convertido en un flotador y cada indicador está separado por 0,5 puntos.

¿Cómo hago esto puramente un número entero?


Cambiar el groupby tiene el mismo resultado: ingrese la descripción de la imagen aquí


las marcas todavía están separadas por 2 espacios después de convertir la columna del año a un formato de cadena

 df['year'] = df['year'].astype(str)

: ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

La expectativa de que el uso de datos enteros llevará a un eje matplotlib a mostrar solo números enteros no está justificada. Al final, cada eje es un eje flotante numérico.

Los ticks y las etiquetas están determinados por localizadores y formateadores. Y matplotlib no sabe que desea trazar solo números enteros.

Algunas posibles soluciones:

Dígale al localizador predeterminado que use números enteros

El localizador predeterminado es un AutoLocator , que acepta un atributo integer . Por lo tanto, puede establecer este atributo en True :

 ax.locator_params(integer=True)

Ejemplo:

 import pandas as pd import numpy as np import matplotlib.pyplot as plt data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014], "count" :[1000,2200,3890,5600,8000] }) ax = data.plot(x="year",y="count") ax.locator_params(integer=True) plt.show()

Usando un localizador fijo

Puede marcar solo los años presentes en el marco de datos usando ax.set_ticks() .

 import pandas as pd import numpy as np import matplotlib.pyplot as plt data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014], "count" :[1000,2200,3890,5600,8000] }) data.plot(x="year",y="count") plt.gca().set_xticks(data["year"].unique()) plt.show()

Convertir año hasta la fecha

Puede convertir la columna del año en una fecha. Para las fechas, se realiza automáticamente un etiquetado mucho más agradable.

 import pandas as pd import numpy as np import matplotlib.pyplot as plt data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014], "count" :[1000,2200,3890,5600,8000] }) data["year"] = pd.to_datetime(data["year"].astype(str), format="%Y") ax = data.plot(x="year",y="count") plt.show()

En todos los casos obtendrías algo como esto:

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Report

0

import matplotlib.pyplot as plt # Use min and max to get the range of years to use in axis ticks year_min = df['year'].min() year_max = df['year'].max() df['year'] = df['year'].astype(str) # Prevents conversion to float plt.xticks(range(year_min, year_max, 1)) # Sets plot ticks to years within range

¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!