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
R 如何使用对数刻度在geom_箱线图中包含-inf值?_R_Ggplot2 - Fatal编程技术网

R 如何使用对数刻度在geom_箱线图中包含-inf值?

R 如何使用对数刻度在geom_箱线图中包含-inf值?,r,ggplot2,R,Ggplot2,我认为ggplot在处理日志级别的-inf时是不一致的。下面是显示类似信息的两个图。在第一种情况下,我使用方框图以对数比例显示示例数据集的第25、50和75个百分位。如您所见,它删除了0(或对数刻度上的-inf值),并从剩余的数据点创建方框图 在第二个例子中,我预先计算了第25、50和75个百分位,然后使用geom_point用对数标度绘制了类似的图。在这种情况下,零值仅绘制在轴的底部,而不是删除。我认为这种行为更好。有没有一种方法可以在不删除-inf值的情况下绘制方框图 非常感谢 librar

我认为ggplot在处理日志级别的-inf时是不一致的。下面是显示类似信息的两个图。在第一种情况下,我使用方框图以对数比例显示示例数据集的第25、50和75个百分位。如您所见,它删除了0(或对数刻度上的-inf值),并从剩余的数据点创建方框图

在第二个例子中,我预先计算了第25、50和75个百分位,然后使用geom_point用对数标度绘制了类似的图。在这种情况下,零值仅绘制在轴的底部,而不是删除。我认为这种行为更好。有没有一种方法可以在不删除-inf值的情况下绘制方框图

非常感谢

library(tidyverse)
# create dataset
Test_Data <- data.frame("Values" = seq(0,10000,1))
Test_Data$Values[Test_Data$Values%%3==0] <- 0

Test_Data$Groups[Test_Data$Values%%2==0] <- 'A'
Test_Data$Groups[Test_Data$Values%%2!=0] <- 'B'
Test_Data$Values <- Test_Data$Values/10000


# plot boxplot
ggplot(data = Test_Data, aes(x= Groups, y = Values)) + 
  geom_boxplot()+ 
  scale_y_continuous(trans='log10', limits = c(1e-5, 1e1)) +
  annotation_logticks(sides = "l") 

# Create dataset with quantile measures
Test_Data_Processed <- Test_Data %>%
  select_all() %>%
  group_by(Groups) %>%
  summarise(Num = n(),
            Median = median(Values),
            Percnt_25 = quantile(Values,.25),
            Percnt_75 = quantile(Values, .75)) %>%
  gather(Measure, Value, Median:Percnt_75)

# plot with geom_point
ggplot(data = Test_Data_Processed, aes(x= Groups, y = Value, shape = Measure, color = Groups)) + 
  geom_point(size = 4) +
  scale_y_continuous(trans='log10', limits = c(1e-5, 1e1)) +
  annotation_logticks(sides = "l") 

库(tidyverse)
#创建数据集
测试数据