相关疑难解决方法(0)

ggplot2:y 轴标签在绘图区域内左对齐

我正在寻找一种自动移动 y 轴刻度标签的方法,以便它们实际绘图区域内左对齐。我喜欢 ggplot 中主题组件的总体灵活性,但在尝试找到通用方法来实现此目的时遇到了困难。

我知道给出负右边距 (*gag*)axis.text.y的组合hjust=0可以实现此效果,但必须手动设置负边距以匹配最长 y 轴刻度标签的宽度。

作为示例,请考虑以下代码:

library(ggplot2)

set.seed(0)
dat <- data.frame(x = 1:100, y = (1:100) + runif(100, -10, 10))

p1 <- ggplot(dat, aes(x, y)) + 
  geom_line() +
  scale_y_continuous("", breaks = c(0, 30, 60, 90),
                     labels = c(0, 30, 60, "90 units of something")) +
  theme(axis.text.y = element_text(hjust = 0,
                                   margin = margin(0, -3.1, 0, 0, 'cm')))
Run Code Online (Sandbox Code Playgroud)

我认为它优雅地将 y 轴标签(例如"units of something")合并到图的主体中,但为了实现它,-3.1必须手动找到最后一行中的 (通过反复试验),这雪上加霜:我不仅使用负边距将文本拉到不想要的地方——我还添加了一些神秘的、脆弱的、硬编码的魔法数字。

有谁知道我可以在哪里找到一个更通用和优雅的解决方案来解决这个问题?

r ggplot2

5
推荐指数
1
解决办法
2101
查看次数

围绕轴标签绘制彩色框

考虑这个简单的例子

library(tidyverse)
tibble(x = as.factor(c('good', 'neutral', 'bad')),
       y = as.factor(c('bad', 'neutral', 'bad'))) %>% 
  ggplot(aes(x = x, y = y)) + geom_point()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想提出的X标签(goodneutralbad)以不同的颜色框。例如,good(在x轴和y轴上)将被一个小绿色框包围,依此类推。

我可以在里面做ggplot2吗?

r ggplot2

2
推荐指数
1
解决办法
142
查看次数

设置ggplot2标签背景色

我有这个条形图

group = c("A","A","B","B")
value = c(25,-75,-40,-76)
day = c(1,2,1,2)
dat = data.frame(group = group , value = value, day = day)
dat
ggplot(data=dat, aes(x=factor(group), y=value, fill=factor(day))) +
   geom_bar( stat="identity", position="dodge")+
   geom_label(aes(label =round(value,0),fill="white"),
   colour = "black", position= position_dodge(width=1))
Run Code Online (Sandbox Code Playgroud)

我希望标签为带有黑色字体的白色背景,但是当我添加fill="white"绘图时是不正确的。标签没有白色背景和黑色字体。

注意这里没有fill="white"情节看起来不错。我只想更改标签背景和字体

group = c("A","A","B","B")
value = c(25,-75,-40,-76)
day = c(1,2,1,2)
dat = data.frame(group = group , value = value, day = day)

ggplot(data=dat, aes(x=factor(group), y=value, fill=factor(day))) +
  geom_bar( stat="identity", position="dodge")+
  geom_label(aes(label =round(value,0)),colour = "black", 
    position= position_dodge(width=1))
Run Code Online (Sandbox Code Playgroud)

还请注意 …

r ggplot2

1
推荐指数
1
解决办法
4603
查看次数

标签 统计

ggplot2 ×3

r ×3