我有以下数据:
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
我得到什么(左)和[概念*]我想要什么(右):
我尝试过美学和玩各种因素,但没有任何效果。经过广泛搜索后,This post似乎与我的最相似,但我的问题却与众不同。
我该怎么办?
*我在概念上说,因为我在画画中画了这个。我希望它看起来像一个典型的 library(ggplot2)
ggplot(data = d, aes(x = abund, y = factor(id), fill = factor(type))) +
theme_bw() + geom_bar(stat='identity')
堆积条形图。
注意:我实际需要的最终结果是为多个ggplot
组提供堆积条形图(即,我使用我的示例id
答案 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()
另一个想法是使用geom_rect
,但这需要创建xmin
,xmax
,ymin
和ymax
。因此,原始数据框需要额外的工作。
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()