我想使用ggplot2和geom_bar创建一个堆积图表.
这是我的源数据:
Rank F1 F2 F3
1 500 250 50
2 400 100 30
3 300 155 100
4 200 90 10
Run Code Online (Sandbox Code Playgroud)
我想要一个堆积图表,其中x是等级,y是F1,F2,F3中的值.
# Getting Source Data
sample.data <- read.csv('sample.data.csv')
# Plot Chart
c <- ggplot(sample.data, aes(x = sample.data$Rank, y = sample.data$F1))
c + geom_bar(stat = "identity")
Run Code Online (Sandbox Code Playgroud)
这是我能得到的.我不确定如何堆叠其余的字段值.
也许我的data.frame格式不好?
我有一个基本的条形图,我是从ggplot2创建的.y变量包含正值和负值,大约一半的矢量值为负值.我想自定义轴标签,以便当相应的x因子的y值为负时,其标签为红色.这是一个可重复的例子:
#Create data
x <- c("a","b","c","d","e","f")
y <- c("10", "9","-10","11","-3","-15")
data <- data.frame(x, y)
data$y <- as.numeric(as.character(data$y))
data$category <- ifelse(as.numeric(data$y)<0, 0, 1)
data$category <- as.factor(data$category)
#Graph
library(cowplot) #theme
library(ggplot2)
ggplot(data, aes(x=x, y=y)) +
geom_bar(stat = "identity", aes(fill=category)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
theme(axis.text.x = element_text(colour = "black"))
Run Code Online (Sandbox Code Playgroud)
我需要的是一种将"c","e"和"f"的标签颜色更改为我选择的颜色的方法.我试过切换,theme(aes(axis.text.x=element_text(colour=Air_pricier)))但这产生了一个错误.提前致谢.
我有以下内容,以条形图数据框.
c1 <- c(10, 20, 40)
c2 <- c(3, 5, 7)
c3 <- c(1, 1, 1)
df <- data.frame(c1, c2, c3)
ggplot(data=df, aes(x=c1+c2/2, y=c3)) +
geom_bar(stat="identity", width=c2) +
scale_fill_manual(values=c("#FF6666"))
Run Code Online (Sandbox Code Playgroud)
我最终只有灰色条纹:条形图的灰色条纹
我想改变酒吧的颜色.我已经尝试过来自http://www.cookbook-r.com/Graphs/Colors_(ggplot2)/的不同scale_fill_manual, 但仍然有灰色条.
谢谢您的帮助.
我正在r4ds.had.co.nz的 3.7节学习geom_bar.我运行这样的代码:
library(ggplot2)
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))
Run Code Online (Sandbox Code Playgroud)
然后我有这个情节:

关键是,如果我排除"group = 1"部分:
library(ggplot2)
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop..))
Run Code Online (Sandbox Code Playgroud)
情节错了, 
但是如果我用group = 2或group ="x"替换group = 1,那么该图仍然看起来正确.所以我不太明白group = 1的含义以及如何使用它.
我想调整条形图上的文字.
我试图调整hjust/vjust以显示我喜欢它但似乎它不能正常工作.
ggplot(data) +
geom_bar(aes(name, count,
fill = week), stat='identity', position = 'dodge') +
geom_text(aes(name,count,
label=count),hjust=0.5, vjust=3, size=2,
position = position_dodge(width = 1)) +
coord_flip()
Run Code Online (Sandbox Code Playgroud)
所以我希望数字位于每个条形图上,中间位于右边缘,因此它的可读性不会像最后一部分那样重叠.
给定以下数据集:
Division Year OperatingIncome
1 A 2012 11460
2 B 2012 7431
3 C 2012 -8121
4 D 2012 15719
5 E 2012 364
6 A 2011 12211
7 B 2011 6290
8 C 2011 -2657
9 D 2011 14657
10 E 2011 1257
11 A 2010 12895
12 B 2010 5381
13 C 2010 -2408
14 D 2010 11849
15 E 2010 517
Run Code Online (Sandbox Code Playgroud)
如何在ggplot2中完成包含负值的堆积条形图?这是我正在使用的基本图表序列:
ggplot(income_m, aes(x=Year, y=OperatingIncome, fill=Division)) + geom_bar() +
+ scale_fill_brewer(type = "seq", palette = 1)
Run Code Online (Sandbox Code Playgroud)
这会返回一个错误: …
我已经看到很多问题(通常与ggplot2条形图中的订单栏相关)关于如何(重新)在条形图中对类别进行排序.
我所追求的只是一个不同的触摸,但我还没有找到一个好方法:我有一个多面条形图,我想根据另一个变量独立地为每个面定购x轴(在我的例子中,该变量只是y值本身,即我只希望条形在每个方面增加长度).
简单示例,遵循例如ggplot2条形图中的订单栏:
df <- data.frame(name=c('foo','bar','foo','bar'),period=c('old','old','recent','recent'),val=c(1.23,2.17,4.15,3.65))
p = ggplot(data = df, aes(x = reorder(name, val), y = val))
p = p + geom_bar(stat='identity')
p = p + facet_grid(~period)
p
Run Code Online (Sandbox Code Playgroud)
我们得到的是以下内容:

而我想要的是:

我有一个数据帧d:
> head(d,20)
groupchange Symscore3
1 4 1
2 4 2
3 4 1
4 4 2
5 5 0
6 5 0
7 5 0
8 4 0
9 2 2
10 5 0
11 5 0
12 5 1
13 5 0
14 4 1
15 5 1
16 1 0
17 4 0
18 1 1
19 5 0
20 4 0
Run Code Online (Sandbox Code Playgroud)
我正在密谋:
ggplot(d, aes(groupchange, y=..count../sum(..count..), fill=Symscore3)) +
geom_bar(position = "dodge")
Run Code Online (Sandbox Code Playgroud)
通过这种方式,每个条形表示其在整个数据上的百分比.
相反,我希望每个条形代表相对百分比; 即获得的柱的总和groupchange …
这实际上是两个问题中的一个(不确定是否违反SO规则,但无论如何).
第一个问题是我如何强迫一个geom_text适合geom_bar?(动态根据绘制的值)
环顾四周,我发现的解决方案正在改变标签的大小.这当然有效,但不适用于所有情况.您可以更改特定绘图的大小以使文本适合条形,但是当数据更改时,您可能需要再次手动更改文本的大小.我现实生活中的问题是,我需要为不断变化的数据(每日)生成相同的图,所以我无法真正手动调整每个图的大小.
我尝试将标签的大小设置为数据的函数.它有点工作,不完美,但适用于许多情况.
但这是另一个问题,即使标签适合栏内,重新调整情节会使一切变得混乱.调查一下,我也在ggplot文档中找到了
标签确实有高度和宽度,但它们是物理单位,而不是数据单位.它们在该绘图上占用的空间量在数据单位中不是恒定的:当您调整绘图大小时,标签保持相同的大小,但轴的大小会发生变化.
这让我想到了第二个问题:是否可以更改此默认行为并让/使图表调整大小?
还让我提炼我的第一个问题.是否可以强制a geom_text适合a geom_bar,使用物理单位和数据单元之间的聪明关系动态设置文本的大小?
所以,为了遵循良好的做法,这是我可重复的例子:
set.seed(1234567)
data_gd <- data.frame(x = letters[1:5],
y = runif(5, 100, 99999))
ggplot(data = data_gd,
mapping = aes(x = x, y = y, fill = x)) +
geom_bar(stat = "identity") +
geom_text(mapping = aes(label = y, y = y/2))
Run Code Online (Sandbox Code Playgroud)
此代码生成此图:
如果我只是简单地调整绘图大小," 标签保持相同的大小,但轴的大小会发生变化 ",从而使标签适合条形图(现在标签甚至可能太小).
所以,这是我的第二个问题.标签调整大小并保持纵横比相对于条形图会很好.任何想法如何实现这一点或是否有可能?
好的,但回到如何在条形图中标注标签,最简单的解决方案是设置标签的大小.
ggplot(data = data_gd,
mapping = aes(x = x, y = y, fill = x)) +
geom_bar(stat = …Run Code Online (Sandbox Code Playgroud) 我想将[r]因子变量的频率分布绘制为条形图,其中条形表示因子水平的频率计数.我使用ggplot2来做到这一点并没有问题.
我无法弄清楚的是如何将频率计数标签添加到条形图中的条形图上.我尝试过的语法如下:
ggplot(data, aes(x = factorvar)) + geom_bar(fill = "somecolor") + geom_text(aes(y = ???))
Run Code Online (Sandbox Code Playgroud)
我想我已经彻底搜索了stackoverflow和W.Chang的"R Graphics Cookbook",但我找不到任何具体的答案,我应该在上面的geom_text()的美学中与"y"匹配.我尝试了一些变体,如:(y = ..count ..),但它不起作用.
我将不胜感激任何帮助.谢谢...