2016-11-29 74 views
2

原ggplot命令改变X/Y列,而无需编辑

比方说,我产生了以下情节:

p <- (ggplot(mtcars, aes (col = factor(cyl), x = wt, y = disp)) 
    + geom_point (shape = 19) 
    + geom_text (aes(y=disp+0.1,label=hp), size = 2.5, vjust=0) 
    + stat_smooth(method=lm)) 
plot(p) 

enter image description here

无论如何,我可以改变,例如,xycol,而不必回去编辑原件?

例如,假设我想将x更改为mpgcolgear。我想只是运行类似,

p + ggplot(aes=aes (col = factor(gear), x = mpg)) 
plot(p) 

,但第一个命令给出了错误:

Error: Don't know how to add o to a plot 

有没有办法来改变剧情中使用哪些列,而不必回去并编辑原始命令?

回答

2

要更改剧情的整体美观,你可以这样做:

p + aes(color = factor(gear), x = mpg) 

要更改特定层的美观性,您可以手动分配新的变量改变对象p。虽然这看起来很脆弱。

要更改您的例子为geom_text层的审美映射:

p$layers[[2]]$mapping$label = mtcars$wt 
p$layers[[2]]$mapping$y = mtcars$disp + 2 
+0

呵呵。好的...但现在可以说我想更新'y'到'hp'并将标签更改为'disp',而不更改字体大小? (y = hp + 0.3,label = disp)'p + aes(y = hp,label = disp)'不改变标签,'p + aes(y = hp,label = disp)+ geom_text )'添加另一组标签,而不是替换它们。并且添加的标签的字体是默认的... – ipetrik

+2

@ipetrik是的,我回答了您关于更改剧情的整体美学的问题。我添加了一种可能的方法来更改单个图层,虽然它对我来说似乎很脆弱。 – aosmith

+0

嗯...是的,谢谢!我只想看看我还能学什么。 :-)你是对的,这看起来真的很丑,但它是信息! – ipetrik

相关问题