为ggplot2中的两个小平面编组指定不同的x标记标签 [英] Specifying different x-tick labels for two facet groups in ggplot2

查看:23
本文介绍了为ggplot2中的两个小平面编组指定不同的x标记标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个表示两个方法结果的框图,每个方法都有两个验证方法和三个场景,将使用ggplot2绘制。一切正常,但我想更改x轴刻度标签,以区分每个组中使用的技术类型。

我使用了以下代码:

data <- read.csv("results.csv", header = TRUE, sep=',')

ggplot() + 
  geom_boxplot(data = data, aes(x = Validation, y = Accuracy, fill = Scenario)) +
  facet_wrap(~ Method) +
  labs(fill = "")

我的数据结构如下:

Method        Validation        Scenario       Accuracy
-------------------------------------------------------
Method 1      Iterations        Scenario 1     0.90
Method 1      Iterations        Scenario 2     0.80
Method 1      Iterations        Scenario 3     0.86
Method 1      Recursive         Scenario 2     0.82
Method 2      Iterations        Scenario 1     0.69
Method 2      Recursive         Scenario 3     0.75

并得到以下曲线图:

我只想将方法1和方法2中的第一个x-tick标签(迭代)分别更改为100-迭代10-迭代

我尝试添加此代码,但这更改了两个组的标签。

+ scale_x_discrete(name = "Validation", 
                   labels = c("100-iterations", "Recursive", 
                              "10-iterations", "Recursive")) +

提前谢谢。

推荐答案

gggraph包的面选项不是针对不同面的不同轴标签/比例而设计的(有关详细说明,请参阅here),但这种情况下的一种解决方法是为不同面改变底层x轴变量的值,以便在facet_wrap()中设置scales = "free_x",以便在每个面的x轴中只显示相关的值

library(ggplot2)
library(dplyr)

ggplot(data %>%
         mutate(Validation = case_when(Validation == "Recursive" ~ "Recursive",
                                       Method == "Method 1" ~ "100-iterations",
                                       TRUE ~ "10-iterations")),
       aes(x = Validation, y = Accuracy, fill = Scenario)) +
  geom_boxplot() +
  facet_wrap(~ Method, scales = "free_x")

数据:

set.seed(1)
data <- data.frame(
  Method = rep(c("Method 1", "Method 2"), each = 100),
  Validation = rep(c("Iterations", "Recursive"), times = 100),
  Scenario = sample(c("Scenario 1", "Scenario 2", "Scenario 3"), 200, replace = TRUE),
  Accuracy = runif(200)
)

这篇关于为ggplot2中的两个小平面编组指定不同的x标记标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆