geom_bar()绘制线而不是条形

时间:2018-06-17 15:51:59

标签: r plot ggplot2 geom-bar stacked-chart

我有以下数据:

int k; // remove f

int factorial (int f);

int main () {

int n,i;

float e=1; // take e as float/double, not int

printf("Enter the value of n:");

scanf("%d",&n);

for (i=1 ; i<=n ; i++) {

    e=e+(1.0/factorial(i)); // take 1.0 (floating value) instead of 1 (integer value)
}

printf("The value of e is %f",e);

return(0);
}

int factorial (int f) {
    int total=1; // initialize total with 1
    for (k=1 ; k<=f ; k++) {

        total=total*k; // here is a big mistake in your code. You incremented value of f in every iteration. Try to print value of f after every iteration to find your error.
    }

    return(total);
}

我想d <- data.frame(id = rep(2,6), type = c(letters[1:6]), abund = c(27.3,2.7,2.3,2.1,1.2,0.3)) id type abund 1 2 a 27.3 2 2 b 2.7 3 2 c 2.3 4 2 d 2.1 5 2 e 1.2 6 2 f 0.3 中创建堆积的条形图,但是当我尝试它时,它无法正常工作:

ggplot

我得到什么(左)和[概念*]我想要什么(右):

enter image description here enter image description here

我尝试过美学和玩各种因素,但没有任何效果。经过广泛搜索后,This post似乎与我的最相似,但我的问题却与众不同。

我该怎么办?

*我在概念上说,因为我在画画中画了这个。我希望它看起来像一个典型的 library(ggplot2) ggplot(data = d, aes(x = abund, y = factor(id), fill = factor(type))) + theme_bw() + geom_bar(stat='identity') 堆积条形图。

注意:我实际需要的最终结果是为多个ggplot组提供堆积条形图(即,我使用我的示例id

1 个答案:

答案 0 :(得分:1)

也许这就是你要找的东西。我们可以使用coord_flip翻转x和y轴。

d <- data.frame(id = rep(2,6), type = c(letters[1:6]), abund = c(27.3,2.7,2.3,2.1,1.2,0.3),
                stringsAsFactors = FALSE) 

library(ggplot2)

ggplot(data = d, aes(x = factor(id), y = abund, fill = factor(type))) +
  # geom_bar(stat='identity') will also work
  geom_col() +
  # Flip the x and y axis
  coord_flip() +
  theme_bw() 

enter image description here

另一个想法是使用geom_rect,但这需要创建xminxmaxyminymax。因此,原始数据框需要额外的工作。

library(dplyr)

d2 <- d %>% 
  mutate(ymin = 0) %>%
  mutate(xmin = lead(abund), xmin = ifelse(is.na(xmin), 0, xmin)) 

ggplot(data = d2, aes(xmin = xmin, xmax = abund, ymin = ymin, ymax = id, 
                      fill = factor(type))) +
  geom_rect() +
  theme_bw()

enter image description here