我正在尝试在R中创建直方图/条形图,以显示我在数据集和更高中的每个x值的计数。我无法做到这一点,我不知道我是否使用geom_histogram或geom_bar(我想使用ggplot2)。进一步描述我的问题:
在X轴上,我有“Percent_Origins”,这是我数据框中的一列。在我的Y轴上 - 对于我发生的每个Percent_Origin值,我希望条形的高度表示具有该百分比值和更高值的行数。现在,如果我要使用直方图,我有:
plot <- ggplot(dataframe, aes(x=dataframe$Percent_Origins)) +
geom_histogram(aes(fill=Percent_Origins), binwidth= .05, colour="white")
我应该更改填充或一般代码以执行我想要的操作?也就是说,绘制每个值的计数累积和更高?谢谢!
答案 0 :(得分:1)
我认为您最好的选择是创建累积分发函数首先然后将其传递给ggplot
。有几种方法可以做到这一点,但一个简单的方法(使用dplyr
)是对数据进行排序(按降序排列),然后只为每个方法分配一个计数。修剪数据,以便仅包含最大计数,然后绘制它。
为了演示,我使用的是内置iris
数据。
iris %>%
arrange(desc(Sepal.Length)) %>%
mutate(counts = 1:n()) %>%
group_by(Sepal.Length) %>%
slice(n()) %>%
ggplot(aes(x = Sepal.Length, y = counts)) +
geom_step(direction = "vh")
给出:
如果您真的想要条形而不是线条,请改用geom_col
。但是,请注意,您需要填充间隙(以确保条纹在整个范围内均匀分布)或处理图中的断点。