地面geom_text到x轴(例如y = 0)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了地面geom_text到x轴(例如y = 0)相关的知识,希望对你有一定的参考价值。

我有一个ggplot中的图形,如下所示:

我希望每个条上的数字标签接地/胶合到x轴,其中y <= 0。

这是生成图形的代码:

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")

我已经尝试了vjust并尝试使用position_nudge作为geom_text元素,但我能找到的每个解决方案都会改变geom_text各个元素在其当前位置的位置。因此,我尝试的一切都会产生如下情况:

如何使ggplot将文本接地到x轴的底部,其中y <= 0,可能还有可能引入angle = 45

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

答案

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

enter image description here

另一答案

我在代理服务器后面阻止了与谷歌驱动器的连接,因此我无法访问您的数据。我无法测试这个,但我会在我的数据集中引入一个新标签字段,如果y <0,则将y设置为0:

df <- df %>%
  mutate(labelField = if_else(numofpics<0, 0, numofpics)

然后我会在我的geom_text调用中使用此标签字段:

geom_text(aes(x=row, y=labelField, label=bbch), angle = 45)

希望有所帮助。

另一答案

您只需在geom_text中定义y值(例如-50)

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 = 

as.character(unique(df $ crop)))+ labs(x = c(),y =“图片数量”)

以上是关于地面geom_text到x轴(例如y = 0)的主要内容,如果未能解决你的问题,请参考以下文章

在沿 x 轴定义的点处沿 y 轴插值数据

matlab画图 如何将两个共用x轴的图画在一幅图上 使上边为一个y轴,下边为不同的y轴?

旋转OpenGL纹理python

剑道图表将y轴设置为整数数值

用matlab绘图时,如何只设定一个轴范围?

如何设置 highcharts X轴和Y轴值