首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用不寻常的参数更改ggplot中X/ Y标签的大小

用不寻常的参数更改ggplot中X/ Y标签的大小
EN

Stack Overflow用户
提问于 2020-04-27 17:55:10
回答 1查看 109关注 0票数 0

我的目标是在一个可能有点不寻常的图表中增加标签的大小,因为:

  • 我希望用红色绘制零值,并使用 aes (color = mm3 == 0)) + scale_colour_manual(values = c(TRUE= "red",FALSE= 'black'))

来完成这个任务。

我试过用:

  • 主题(axis.text=element_text(size=12),axis.title=element_text(size=14,face=“粗体”))

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

  • theme_grey(base_size = 22)

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

这是代码:

代码语言:javascript
运行
复制
   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()`
  • 由于堆栈溢出的社区规则,我无法添加图像。我也不知道如何为这个做一个最小的可重复的例子。所以,也许它有助于注意到它的一侧是一个条形图,在初始的x轴上有相反的值。它用红色点绘制+100个零值,用黑色绘制几个峰值。希望你们有一些建议!
EN

回答 1

Stack Overflow用户

发布于 2020-04-27 19:04:27

首先,您可以通过共享一些数据(甚至是一个虚拟数据集)来创建一个最小的可重复示例。无论如何,这里有一个示例希望向您展示两种可以工作的方法。一种比另一种更受推荐(因为它使用了一些Tidy数据原则),但两者都得到了相同的结果。

这两种数据集都是:

代码语言:javascript
运行
复制
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()函数中设置值的标签:

代码语言:javascript
运行
复制
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()而知道我的标签名,所以我知道我也可以正确地设置我的颜色。

整齐数据法

更好的方法是围绕着使用dplyrtidyr以及通常所说的整齐数据原则来构建。此方法建议您在数据集中添加一列,以便稍后绘图时使用。这样做“安全得多”,所以您不会将数据准备与绘图混为一谈,这样以后的绘图就更容易了。在这里,我们首先调整数据集:

代码语言:javascript
运行
复制
df$stuff <- ifelse(df$y < 0, 'Small Stuff', 'Big Stuff')

然后情节函数是这样的:

代码语言:javascript
运行
复制
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=...来设置它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61465248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档