问题描述
我正在使用R绘制直方图
我使用此函数获取同一类别的所有数字的总和
pll <- medical %>% group_by(numHospStays) %>% summarise(val=sum(numVisits))
结果是一个列表
我正在尝试使用numHospStays列作为我的x轴绘制直方图。 val列是numHospStays中每个类别的密度。
解决方法
ggplot(pll) + geom_col(aes(x=numHospStays,y=val))
会工作吗?这是一个条形图,其功能非常类似于我认为的直方图。
您在x轴上有一个离散值,因此从技术上讲这是条形图而不是直方图。您可以为此使用geom_bar()
或geom_col()
:
medical %>%
group_by(numHospStays) %>%
summarise(val = sum(numVisits))
ggplot(aes(x = numHospStays,y = val)) +
geom_col(fill = "deepskyblue2",color = "black") +
labs(x = "Number of hospital stays",y = "Count")
或者为了强调入场人数呈指数下降的趋势,请尝试在y轴上使用对数刻度,或者使用填充刻度以获得美学价值,并使用theme_bw
来调整整体外观:
medical %>%
group_by(numHospStays) %>%
summarise(val = sum(numVisits))
ggplot(aes(x = numHospStays,y = val)) +
geom_col(aes(fill = numHospStays)) +
scale_fill_gradient(low = "forestgreen",high = "red",guide = guide_none()) +
labs(x = "Number of hospital stays",y = "Count") +
scale_y_log10() +
theme_bw()
,
为您的数据提供reproducible example,将有助于我们回答您的问题。
在对数据进行一些假设的情况下,您可以使用以下代码创建没有group_by
和summarise
步骤的密度直方图:
ggplot(data = medical) +
geom_histogram(aes(x = numHospStays,y = ..density..))