在直方图上展开数据 matplotlib jupyter
Spread out data on the histogram matplotlib jupyter
请注意,我是 matplotlib 的新手,我正在尝试分散直方图中的数据,如下所示。以下是我编码的结果:
我想达到的效果是这样的:
我尝试展开垃圾箱,但它只会降低频率而不会展开图表。
下面是我的代码:
#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()
如何 space 以类似于我想要实现的直方图的方式输出 x 刻度?
如果你这样做
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 ]
你可以看到有些计数离均值很远。
您可以通过在指定的最小值和最大值之间剪裁您感兴趣的变量然后绘制直方图来忽略那些远离均值 bins 的东西,就像这样
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()
这将产生以下结果
请注意,我是 matplotlib 的新手,我正在尝试分散直方图中的数据,如下所示。以下是我编码的结果:
我想达到的效果是这样的:
我尝试展开垃圾箱,但它只会降低频率而不会展开图表。 下面是我的代码:
#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()
如何 space 以类似于我想要实现的直方图的方式输出 x 刻度?
如果你这样做
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 ]
你可以看到有些计数离均值很远。
您可以通过在指定的最小值和最大值之间剪裁您感兴趣的变量然后绘制直方图来忽略那些远离均值 bins 的东西,就像这样
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()
这将产生以下结果