Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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
仅显示带有geom_errorbarh的ggplot x轴上的最小值和最大值_R_Ggplot2 - Fatal编程技术网

仅显示带有geom_errorbarh的ggplot x轴上的最小值和最大值

仅显示带有geom_errorbarh的ggplot x轴上的最小值和最大值,r,ggplot2,R,Ggplot2,我试图创建一些图表,将某些值与固定的最小值和最大值进行比较(例如,与您在实验室测试结果中得到的结果相同) 使用“geom_errorbarh”,我部分成功地做到了这一点,但当我试图在图形上仅显示那些固定的最小值和最大值时,我被卡住了: 我尝试使用“scale_x_continuous”和固定的中断,但由于某些原因,它在某些图形上似乎没有像预期的那样工作,如下图所示(红色圆圈)。 这是我使用的代码 library(tidyverse) dat1 <- tibble( name =

我试图创建一些图表,将某些值与固定的最小值和最大值进行比较(例如,与您在实验室测试结果中得到的结果相同)

使用“geom_errorbarh”,我部分成功地做到了这一点,但当我试图在图形上仅显示那些固定的最小值和最大值时,我被卡住了: 我尝试使用“scale_x_continuous”和固定的中断,但由于某些原因,它在某些图形上似乎没有像预期的那样工作,如下图所示(红色圆圈)。

这是我使用的代码

library(tidyverse)


dat1 <- tibble(
  name = c("energy","protein","fat","carbs"),
  value = c(5000,105,25,187),
  min_value = c(800,30,20,150),
  max_value=c(4000,80,100,300)
)


p <- ggplot(dat1, aes(value, name))

p + geom_point() +
  geom_errorbarh(aes(xmax = max_value, xmin = min_value),
                 size = 1,
                 colour = "#9b9beb",
                 height=0.2)+ 
  facet_wrap(~name, scales = "free", ncol=1 )+
  xlab(NULL)+ylab(NULL)+
  scale_x_continuous(breaks =c(dat1$min_value,dat1$max_value))

这是因为scale_x_continuous将为所有方面设置相同的中断。要在每个方面都有不同的中断,您应该看看ggh4x包

# install.packages("ggh4x")
library(ggh4x)

p + geom_point() +
  geom_errorbarh(aes(xmax = max_value, xmin = min_value),
                 size = 1,
                 colour = "#9b9beb",
                 height=0.2)+ 
  facet_wrap(~name, scales = "free", ncol=1 )+
  xlab(NULL)+ylab(NULL)+
  facetted_pos_scales(
    x = list(
      name == "energy" ~ scale_x_continuous(breaks = c(dat1$min_value[1],dat1$max_value[1])),
      name == "protein" ~ scale_x_continuous(breaks = c(dat1$min_value[2],dat1$max_value[2])),
      name == "fat" ~ scale_x_continuous(breaks = c(dat1$min_value[3],dat1$max_value[3])),
      name == "carbs" ~ scale_x_continuous(breaks = c(dat1$min_value[4],dat1$max_value[4]))
    )
  )