我的目标是在一个可能有点不寻常的图表中增加标签的大小,因为:
aes (color = mm3 == 0)) +
scale_colour_manual(values = c(TRUE= "red",FALSE= 'black'))来完成这个任务。
我试过用:
这似乎没有任何效果。而且还
这增加了标签大小,但影响了图的着色,并在图形中添加了一个不必要的图例。
这是代码:
ggplot(Rodeococha, aes(x=`Age BP`,y=mm3)) +
geom_bar(size=1,linetype=1,stat="identity", aes (color = mm3 == 0)) +
scale_colour_manual(values = c(`TRUE` = "red",`FALSE` = 'black')) +
scale_x_continuous(limits=c(0, 8000), breaks=c(0,1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000)) +
scale_x_reverse() +
ggtitle("Charcoal Abundance") +
labs(y= "Volume (mm3/cm3)", x = "Time(yrs. BP)") +
theme_ipsum()+
theme(legend.position = "none") +
coord_flip()`发布于 2020-04-27 19:04:27
首先,您可以通过共享一些数据(甚至是一个虚拟数据集)来创建一个最小的可重复示例。无论如何,这里有一个示例希望向您展示两种可以工作的方法。一种比另一种更受推荐(因为它使用了一些Tidy数据原则),但两者都得到了相同的结果。
这两种数据集都是:
df <- data.frame(x=1:100, y=rnorm(100))
# basic point plot:
ggplot(df, aes(x,y)) + geom_point()

假设我们的目标是绘制相同的图,但是用颜色表示点,这样负y值是蓝色的,正y值是红色的。我们该怎么做?
数据在线评价
您可以使用代码进行在线评估,就像您建议的那样。它可以工作,但要得到同样的结果要复杂一些,而且有点笨重。虽然使用内联表达式(如果使用这种方法,我建议使用aes(color= eval(...))),但这意味着您需要使用scale_color_manual在后端进行更多的工作。使用ifelse()会更好一些,让我们在aes()函数中设置值的标签:
ggplot(df, aes(x,y)) +
geom_point(aes(color=ifelse(y<0,'Small Stuff', 'Big Stuff'))) +
scale_color_manual("Type of Stuff", values=list('Big Stuff'='red','Small Stuff'='blue'))

注意,scale_color_manual函数用于设置图例的名称。由于我因为使用ifelse()而知道我的标签名,所以我知道我也可以正确地设置我的颜色。
整齐数据法
更好的方法是围绕着使用dplyr、tidyr以及通常所说的整齐数据原则来构建。此方法建议您在数据集中添加一列,以便稍后绘图时使用。这样做“安全得多”,所以您不会将数据准备与绘图混为一谈,这样以后的绘图就更容易了。在这里,我们首先调整数据集:
df$stuff <- ifelse(df$y < 0, 'Small Stuff', 'Big Stuff')然后情节函数是这样的:
ggplot(df, aes(x,y)) +
geom_point(aes(color=stuff)) +
scale_color_manual("Type of Stuff", values=list('Big Stuff'='red', 'Small Stuff'='blue'))在这种情况下,两种方法的代码量都差不多。在更复杂的例子中,Tidy方法通常更好,但是这里使用这两种方法。
适用于你的系统?如果不共享数据集或情节,很难说。只是传说的名字吗?您可以在您的scale_color_...函数中或使用labs(color=...来设置它。
https://stackoverflow.com/questions/61465248
复制相似问题