Выкладываю данные по гистограмме matplotlib jupyter - PullRequest
0 голосов
/ 04 апреля 2020

Имейте в виду, я новичок в matplotlib, и я пытаюсь распространить данные в моей гистограмме, которые можно увидеть ниже. Ниже приведен результат того, что я кодировал:

my attempt

Что я хочу достичь, это:

Want to achieve

Я попытался разложить ячейки, но это только уменьшило частоту, а не разложило график. Ниже приведен мой код:

#Loading data
url = 'https://raw.githubusercontent.com/diggledoot/dataset/master/uber-raw-data-apr14.csv'
latlong = pd.read_csv(url)

#Rounding off data for more focused results
n=2
latlong['Lon']=[round(x,n) for x in latlong['Lon']]
latlong['Lat']=[round(x,n) for x in latlong['Lat']]

#Plot
plt.figure(figsize=(8,6))
plt.title('Rides based on latitude')
plt.hist(latlong['Lat'],bins=100,color='cyan')
plt.xlabel('Latitude')
plt.ylabel('Frequency')
plt.xticks(np.arange(round(latlong.Lat.min(),1),round(latlong.Lat.max(),1),0.1),rotation=45)
plt.show()

Как я могу расположить x-tick таким же образом, как гистограмма, которую я хочу достичь?

1 Ответ

1 голос
/ 04 апреля 2020

Если вы сделаете

frequency, bins = np.histogram(latlong['Lat'], bins=20)
print(frequency)
print(bins)

, вы получите

[     1      7     12     18    301  35831 504342  22081   1256    580
     63     12      8      1      2      0      0      0      0      1]
[40.07   40.1725 40.275  40.3775 40.48   40.5825 40.685  40.7875 40.89
 40.9925 41.095  41.1975 41.3    41.4025 41.505  41.6075 41.71   41.8125
 41.915  42.0175 42.12  ]

Вы можете видеть, что есть некоторые отсчеты очень далеко от среднего.

Вы можете игнорировать эти далекие от средних срезов путем подрезания интересующей вас переменной между указанным минимальным и максимальным значениями, а затем построения гистограммы, что-то вроде этого

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
#Loading data
url = 'https://raw.githubusercontent.com/diggledoot/dataset/master/uber-raw-data-apr14.csv'
latlong = pd.read_csv(url)

#Plot
plt.figure(figsize=(8,6))
plt.title('Rides based on latitude')
plt.hist(np.clip(latlong['Lat'], 40.6, 40.9),bins=50,color='cyan')
plt.xlabel('Latitude')
plt.ylabel('Frequency')
plt.show()

Это приведет к следующему

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...