Python ggplot - 如何对直方图进行分层

时间:2015-05-22 22:10:04

标签: python ggplot2

我在Python ggplot中有3个直方图,效果很好。我想将它们组合成一个图表。我已经被告知有一种方法可以将geom_histogram图层添加到你的绘图中并将它传递给你想要它使用的数据,但我无法弄明白。

这是我的代码:

import pandas as pd
import numpy as np
from ggplot import *


subway_data_df = pd.read_csv('/home/brian/Dropbox/Data_Science_Course/Final Intro Data Science Project/turnstile_weather_v2.csv')



dry_days_df = subway_data_df.loc[subway_data_df['rain'] == 0].reset_index()

rainy_days_df = subway_data_df.loc[subway_data_df['rain'] == 1].reset_index()

very_rainy_days_df = subway_data_df.loc[subway_data_df['precipi'] > .10].reset_index()


print ggplot(very_rainy_days_df, aes(x = 'ENTRIESn_hourly')) + geom_histogram(binwidth=100, fill = 'green') + xlim(0, 8000) + ylim(0,6000)\
+ ggtitle('Subway Useage Under Heavy Rain Conditions') + xlab('Number of Entries per Hour') + ylab('Frequency')       


print ggplot(rainy_days_df, aes(x = 'ENTRIESn_hourly')) + geom_histogram(binwidth=100, fill = 'blue') + xlim(0, 8000) + ylim(0,6000)\
+ ggtitle('Subway Useage Under Rainy Conditions') + xlab('Number of Entries per Hour') + ylab('Frequency')       

print ggplot(dry_days_df, aes(x = 'ENTRIESn_hourly')) + geom_histogram(binwidth=100, fill = 'red') + xlim(0, 8000) + ylim(0,6000)\
+ ggtitle('Subway Useage Under Dry Conditions') + xlab('Nubmer of Entries per Hour') + ylab('Frequency')    

1 个答案:

答案 0 :(得分:0)

因此,要将它们全部合并到一个图表中,您只需将标志转换为一个数据框中的一个变量即可。为此,我们将使用数据框的apply方法。根据我对您上面提供的代码的解释,我提出了以下内容:

def split_groups(row):
    if row['rain'] == 0:
        return 1
    elif row['precipi'] <= 0.1:
        return 2
    else:
        return 3

subway_data_df['rain_type'] = subway_data_df.apply(split_groups, axis=1)

情节函数看起来像这样:

print ggplot(subway_data_df, aes(x = 'ENTRIESn_hourly', fill='rain_type')) + geom_histogram(binwidth=5000)  

情节将如下所示:

enter image description here