使用不寻常的参数改变ggplot中X Y标签的大小。

问题描述 投票:0回答:1

我的目的是在一个图形中增加标签的大小,这也许有点不寻常,因为。

  • 我希望用红色来绘制零值,并使用了... ...

    aes (color = mm3 == 0)) +

    scale_colour_manual(values = c(TRUE= "red",FALSE= 'black'))

来完成这个任务。

我试过使用

  • theme(axis.text=element_text(size=12),axis.title=element_text(size=14,face="bold"))

这似乎没有任何效果。而且

  • theme_grey(base_size = 22)

这增加了标签的大小,但影响了图形的着色,并给图形增加了一个不需要的图例。

这就是代码。

   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()`
  • 因为Stack Overflow的社区规则,我无法添加图片。而且也不太清楚如何为此做一个最低限度的可复制的例子。所以,也许可以帮助你注意到它是一个条形图,初始x轴上的值是反向的。它以红点绘制+100零值,以黑点绘制几个峰值。希望各位有一些建议!
ggplot2 resize label
1个回答
1
投票

首先,你可以通过分享一些数据--哪怕是一个虚数据集--来做一个最小的可重复的例子。 无论如何,这里有一个例子,希望能向你展示两种可能有效的方法。 其中一种比另一种更值得推荐(因为它使用了一些Tidy Data原则),但两者确实能得到同样的结果。

两者的数据集都是。

df <- data.frame(x=1:100, y=rnorm(100))
# basic point plot:
ggplot(df, aes(x,y)) + geom_point()

enter image description here

假设我们的目标是绘制相同的图,但在点上着色,使负的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'))

enter image description here

注意: 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=....

© www.soinside.com 2019 - 2024. All rights reserved.