首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将geom_text接地到x轴(例如y =0)

将geom_text接地到x轴(例如y =0)
EN

Stack Overflow用户
提问于 2019-04-29 17:35:08
回答 3查看 2K关注 0票数 1

我有一个用ggplot制作的图,看起来像这样:

我希望将每个杆件上的数字标签固定/粘贴到x轴上,其中y <= 0。

下面是生成图形的代码:

代码语言:javascript
复制
ggplot(data=df) +
  geom_bar(aes(x=row, y=numofpics, fill = crop, group = 1), stat='identity') +
  geom_point(data=df, aes(x = df$row, y=df$numofparcels*50, group = 2), alpha = 0.25) +
  geom_line(data=df, aes(x = df$row, y=df$numofparcels*50, group = 2), alpha = 0.25) +
  geom_text(aes(x=row, y=numofpics, label=bbch)) +
  geom_hline(yintercept=300, linetype="dashed", color = "red", size=1) +
  scale_y_continuous(sec.axis= sec_axis(~./50, name="Number of Parcels")) +
  scale_x_discrete(name = c(),breaks = unique(df$crop), labels = as.character(unique(df$crop)))+
  labs(x=c(), y="Number of Pictures")

我尝试过使用vjustposition_nudge来处理geom_text元素,但我能找到的每个解决方案都会将geom_text中每个元素的位置分别相对于其当前位置进行更改。因此,我尝试的每一件事都会出现这样的情况:

如何将文本放置在x轴的底部,其中y <=为0,可能还会引入angle = 45

数据帧链接= https://drive.google.com/file/d/1b-5AfBECap3TZjlpLhl1m3v74Lept2em/view?usp=sharing

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-29 17:53:53

正如我在注释中所说的,只需将文本的y坐标设置为0或更低,并指定角度:geom_text(aes(x=row, y=-100, label=bbch), angle=45)

票数 2
EN

Stack Overflow用户

发布于 2019-04-29 17:50:06

我在一个代理服务器后面,它会阻止与谷歌硬盘的连接,所以我无法访问你的数据。我无法测试这一点,但我会在我的数据集中引入一个新的label字段,如果为y<0,则将y设置为0:

代码语言:javascript
复制
df <- df %>%
  mutate(labelField = if_else(numofpics<0, 0, numofpics)

然后,我将在geom_text调用中使用此标签字段:

代码语言:javascript
复制
geom_text(aes(x=row, y=labelField, label=bbch), angle = 45)

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2019-04-29 17:52:43

您可以简单地在geom_text中定义y值(例如-50)

代码语言:javascript
复制
ggplot(data=df) +
  geom_bar(aes(x=row, y=numofpics, fill = crop, group = 1), stat='identity') +
  geom_point(data=df, aes(x = df$row, y=df$numofparcels*50, group = 2), alpha = 0.25) +
  geom_line(data=df, aes(x = df$row, y=df$numofparcels*50, group = 2), alpha = 0.25) +
  geom_text(aes(x=row, y=-50, label=bbch)) +
  geom_hline(yintercept=300, linetype="dashed", color = "red", size=1) +
  scale_y_continuous(sec.axis= sec_axis(~./50, name="Number of Parcels")) +
  scale_x_discrete(name = c(),breaks = unique(df$crop), labels = 

裁剪(唯一(df$as.character))+实验室(x=c(),y=“图片数量”)

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

https://stackoverflow.com/questions/55900575

复制
相关文章

相似问题

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