Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何用多轴标签在ggplot2中表示双极测量问题_R_Ggplot2 - Fatal编程技术网

R 如何用多轴标签在ggplot2中表示双极测量问题

R 如何用多轴标签在ggplot2中表示双极测量问题,r,ggplot2,R,Ggplot2,我有一个关于格式问题的调查数据 | Statement A | Agree strongly w/ A| ... | Agree strongly w/ B | Statement B | | A1 | o | ... | o | B1 | 我想用一个条形图来显示每条语句的平均值,条形图的两边都有标签——一个在左边表示语句a,一个在右边表示语句B,如下所示: 资料来源: 我想要y轴的线条

我有一个关于格式问题的调查数据

| Statement A | Agree strongly w/ A| ... | Agree strongly w/ B | Statement B |
| A1          |         o          | ... |          o          | B1          |
我想用一个条形图来显示每条语句的平均值,条形图的两边都有标签——一个在左边表示语句a,一个在右边表示语句B,如下所示:

资料来源:

我想要y轴的线条,在这里你可以看到标签语句A和语句B下的线条,还有y轴的标签,在这里你可以看到带框的A1,A2和B1,B2。在使用scale_y_discrete时使用ggplot,据我所知,您只能有一条线,并且可以在position=right的情况下将其移动到右侧,但好的,即使两条轴线的比例相同,您也不能有两条轴线

这没有多个y比例,我知道ggplot2本机不支持。从技术上讲,它有一个离散的y比例,但有两组标签,但除了使用大量注释外,我不知道如何在ggplot2中实现这一点。有人帮忙吗?这在自然环境中可以做到吗

下面是一个最小的reprex:

example_df <- 
  data.frame(
    statement_a = c("I like to take risks", 
                    "I work to provide for my family"),
    statement_b = c("I am more risk averse",
                    "I work to provide for myself"),
    value = c(-1.5, .5)
  )

plot_1 <- 
  ggplot(example_df, 
         aes(x = statement_a, y = value)) + 
  geom_col() + 
  coord_flip() + 
  scale_x_discrete(name = "")

plot_2 <- 
    ggplot(example_df, 
         aes(x = statement_b, y = value)) + 
  geom_col() + 
  coord_flip() + 
  scale_x_discrete(name = "", position = "top")
图A如下所示: 资料来源:

图B如下所示: 资料来源:

其思想是显示两条轴线A中左边的一条和B中右边的一条,ggplot不支持多个y轴,除非它们都是数字轴,并且一个是另一个的刻度。有很多关于这方面的帖子,你可以自己搜索。这里有一个可能对你有用的方法

example_df <- 
  data.frame(
    statement_a = c("I like to take risks", 
                    "I work to provide for my family"),
    statement_b = c("I am more risk averse",
                    "I work to provide for myself"),
    value = c(-1.5, .5)
  )

row_count <- nrow(example_df)
max_value <- max(abs(example_df$value))

example_df$y <- 1:row_count

library(ggplot2)

ggplot(example_df) +
  geom_rect(aes(xmin = rep(0, row_count), 
                xmax = value, 
                ymin = y-0.3, ymax = y+0.3)) +
  geom_text(aes(x = -max_value-0.2,
                y = y,
                label = statement_a),
            hjust = 1) +
  geom_text(aes(x = max_value-0.2,
                y = y,
                label = statement_b),
            hjust = 0) +
  xlim(c(-max_value-10,max_value+10)) +
  theme_void()

不清楚您在问什么。@MichaelChernick编辑以使其更清楚,但问题是如何在ggplot2中为同一离散比例添加多条轴线和标签。我投票结束这个问题,因为它是关于如何在没有可复制示例的情况下使用R。@gung我将添加一个reprex,但是有一个reprex和在主题上或主题下都是正交的问题。你是对的,即使有一个可复制的例子,这也会是主题外的,但它会在主题上,所以我们可以为你迁移它。说到底,这就是我的观点。要明确的是,有很多帖子都在谈论ggplot2不支持多个比例,但在这种情况下,比例是相同的,我要寻找的是多个轴。