我想在geom_bar图表上堆叠一些标签.这是一个例子:
df <- data.frame(x=factor(c(TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE)))
ggplot(df) + geom_bar(aes(x,fill=x)) + opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(),axis.title.x=theme_blank(),legend.title=theme_blank(),axis.title.y=theme_blank())
Run Code Online (Sandbox Code Playgroud)

现在
表(DF $ X)
FALSE TRUE
3 5
Run Code Online (Sandbox Code Playgroud)
我想在两个酒吧的顶部有3和5.如果我也可以获得百分比值,那就更好了.例如3 (37.5%)和5 (62.5%).像这样:

这可能吗?如果是这样,怎么样?
看似非常简单的事情,但我花了30分钟没有找到答案.
如何反转颜色顺序?通过查看scale_brewer的文档,我认为它可能是formatter=可疑的论点.我通过'rev'然后rev,但它们没有效果(没有错误信息,只是被忽略).
我想用两个expression()语句写一个轴标签.但是,plotmath并且expression不允许这样(例如,下标文本出现在最右侧).我在大约2005年发现了类似问题的讨论,但他们提供的工作并没有转化为我在ggplot2中的应用程序.最近的一个问题解决了多行表达式语句的不同排列,但是这里提供的工作再次不适用于此.
例:
p <- ggplot(mtcars,aes(x=wt,y=mpg))+
geom_point()+
xlab(expression(paste("A long string of text goes here just for the purpose \n of illustrating my point Weight "[reported])))
try(ggsave(plot=p,filename=<some file>,height=4,width=6))
Run Code Online (Sandbox Code Playgroud)
产生一个图像,其中下标"报告"在我希望它位于前一个单词旁边时向右踢出.

我想绘制一个看起来像这样的标签ggplot2:
Value is $\sigma$, R^{2} = 0.6Value is普通字体在哪里,$\sigma$是一个希腊小写的西格玛字母,R^{2} = 0.6显示为R带有上标2后跟等号(=)后跟的0.6.如何在ggplot factor和xlab,ylabR之类的参数中使用它?
Rdates <- c("2007-01-31","2007-02-28","2007-03-30","2007-04-30","2007-05-31","2007-06-29","2007-07-31","2007-08-31","2007-09-28","2007-10-31")
Rdates <- as.Date(Rdates)
Cnames <- c("Column 1 Really Long","Column 2 Really Long","Column 3 Really Long","Column 4 Really Long","Column 5 Really Long","Column 6 Really Long","Column 7 Really Long","Column 8 Really Long","Column 9 Really Long","Column 10 Really Long")
MAINDF <- data.frame(replicate(10,runif(10,-0.03,0.03)))
rownames(MAINDF) <- Rdates
colnames(MAINDF) <- Cnames
CUSTOMpalette <- c("#1a2ffa", "#0d177d", "#1a9ffa", "#fa751a", "#4b8e12", "#6fd21b", "#fae51a", "#c3b104", "#f5df05", "#dcc805")
MAINDF[,"dates"] <- Rdates
MAINDF <- melt(MAINDF,id.vars="dates")
gg <- ggplot(MAINDF, aes(x = dates, y = value, fill = variable))
gg <- …Run Code Online (Sandbox Code Playgroud) 假设有一个线性模型LM,我想要一个残差的qq图.通常我会使用R基础图形:
qqnorm(residuals(LM), ylab="Residuals")
qqline(residuals(LM))
Run Code Online (Sandbox Code Playgroud)
我可以弄清楚如何获得情节的qqnorm部分,但我似乎无法管理qqline:
ggplot(LM, aes(sample=.resid)) +
stat_qq()
Run Code Online (Sandbox Code Playgroud)
我怀疑我遗漏了一些非常基本的东西,但似乎应该有一种简单的方法来做到这一点.
编辑:非常感谢下面的解决方案.我已经修改了代码(非常轻微)以从线性模型中提取信息,以便绘图的工作方式类似于R基础图形包中的便利图.
ggQQ <- function(LM) # argument: a linear model
{
y <- quantile(LM$resid[!is.na(LM$resid)], c(0.25, 0.75))
x <- qnorm(c(0.25, 0.75))
slope <- diff(y)/diff(x)
int <- y[1L] - slope * x[1L]
p <- ggplot(LM, aes(sample=.resid)) +
stat_qq(alpha = 0.5) +
geom_abline(slope = slope, intercept = int, color="blue")
return(p)
}
Run Code Online (Sandbox Code Playgroud) 我想制作一个条形图,其中一个值比所有其他值大得多.有没有一种不连续的y轴方法?我的数据如下:
df <- data.frame(a = c(1,2,3,500), b = c('a1', 'a2','a3', 'a4'))
p <- ggplot(data = df, aes(x = b, y = a)) + geom_bar()
p <- p + opts(axis.text.x=theme_text(angle= 90, hjust=1)) + coord_flip()
p
Run Code Online (Sandbox Code Playgroud)

有没有办法让我的轴可以从1到10,然后是490 - 500?我想不出任何其他绘制数据的方式(除了转换它,我不想做)
在以前版本的ggplot2中,我能够使用以下两个命令之一来格式化我的x日期:
scale_x_date(breaks = "1 month", minor_breaks = "1 week", labels=(date_format="%B")) +
Run Code Online (Sandbox Code Playgroud)
要么
scale_x_date(major="months", minor="weeks", format="%B") +
Run Code Online (Sandbox Code Playgroud)
生成完整月份名称的"%B"格式.
(我担心我再也无法区分哪一个有效,因为它们都被注释掉了.)
我不记得什么时候,但在ubuntu 12.04升级中更新R或ggplot之后,这对我来说不再适用.现在,完全相同的数据会产生错误:
Error in scale_labels.continuous(scale) :
Breaks and labels are different lengths
Run Code Online (Sandbox Code Playgroud)
与第一,和
Error in continuous_scale(aesthetics, "date", identity, breaks = breaks, :
unused argument(s) (major = "months", minor = "weeks", format = "%B")
Run Code Online (Sandbox Code Playgroud)
随着第二个.
如果我删除labels =参数,并申请
scale_x_date(breaks = "1 month", minor_breaks = "1 week") +
Run Code Online (Sandbox Code Playgroud)
它在每个月的第一天产生日期格式"YYYY-MM-DD".
咨询功能帮助?scale_x_date,我也尝试了以下方法:
scale_x_date(breaks = "1 month", minor_breaks = "1 week", labels=date_format("%B")) +
Run Code Online (Sandbox Code Playgroud)
但是这会产生这个错误:
Error in structure(list(call = …Run Code Online (Sandbox Code Playgroud) 我正在使用ggplot2 0.9.1绘制一个相当简单的图表.
x <- rnorm(100, mean=100, sd = 1) * 1000000
y <- rnorm(100, mean=100, sd = 1) * 1000000
df <- data.frame(x,y)
p.new <- ggplot(df,aes(x,y)) +
geom_point()
print(p.new)
Run Code Online (Sandbox Code Playgroud)
哪个有效,但ggplot2默认使用不适合我的观众的科学记数法.如果我想通过输入以下内容来更改x轴标签格式:
p.new + scale_x_continuous(labels = comma)
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error in structure(list(call = match.call(), aesthetics = aesthetics, :
object 'comma' not found
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我注意到语言最近从"格式化"改为"标签".也许我误读了手册页?
编辑:我确实误读了手册页
library(scales)在尝试此操作之前需要加载.
有没有办法根据随数据框提供的变量填充使用facet_wrap创建的facet条?
示例数据:
MYdata <- data.frame(fruit = rep(c("apple", "orange", "plum", "banana", "pear", "grape")), farm = rep(c(0,1,3,6,9,12), each=6), weight = rnorm(36, 10000, 2500), size=rep(c("small", "large")))
示例图:
p1 = ggplot(data = MYdata, aes(x = farm, y = weight)) + geom_jitter(position = position_jitter(width = 0.3), aes(color = factor(farm)), size = 2.5, alpha = 1) + facet_wrap(~fruit)
我知道如何更改条带的背景颜色(例如橙色):
p1 + theme(strip.background = element_rect(fill="orange"))

有没有办法转嫁值的变量size中MYdata的参数fill的element_rect?
基本上,对于所有条带而不是1种颜色,我希望小水果(苹果,李子,梨)的条带背景颜色为绿色,大果实(橙色,香蕉,葡萄)的背景颜色为红色.