小编JLC*_*JLC的帖子

如何在boxplot中保持一致的框宽度,其中factor*group组合没有观察结果?

我正在尝试为多个因子的2组创建一个箱线图以及观察数量的标签.当一个因子级别没有观察到一个组时,具有观察值的组的框占用两个空间并且看起来很奇怪.

最小的例子:

library(tidyverse)

mtcars %>%
  select(mpg, cyl,am) %>%
  filter(!(cyl == 8 & am == 0)) %>%
  ggplot(aes(factor(cyl),mpg,fill=factor(am))) + 
  stat_boxplot(geom = "errorbar") + ## Draw horizontal lines across ends of whiskers
  geom_boxplot(outlier.shape=1, outlier.size=3, 
               position =  position_dodge(width = 0.75)) +
  geom_text(data = mtcars %>%
              select(mpg, cyl, am) %>%
              filter(!(cyl == 8 & am == 0)) %>%
              group_by(cyl, am) %>%
              summarize(Count = n(),
                      q3 = quantile(mpg, 0.75),
                      iqr = IQR(mpg),
                      lab_pos = max(ifelse(mpg < q3+1.5*iqr, mpg, NA), na.rm = TRUE)),
                      aes(x= factor(cyl), y …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 dplyr

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

指定离散 x 轴上的次网格线/一些虚网格线

我正在尝试创建一个用于发布的图表,而我所在领域的绘图惯例对于此信息(绘制听力图)来说是非标准的。

一些示例数据:

subsetAudio <- 
structure(list(Subject = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 
1L, 2L, 3L), Frequency = c(250, 250, 250, 500, 500, 500, 750, 
750, 750, 1000, 1000, 1000, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

如何删除 geom_raster 中连续 x 值之间的空间/间隙

我正在处理一些时频分解的 EEG 数据,并希望使用 ggplot2 生成类似频谱图的图形。但是,我最终在每个时间点之间都有空白。

Data <- read.csv(url("https://www.dropbox.com/s/al3cygigm86mr3s/Test_Spec_Data.csv?dl=0"))
Run Code Online (Sandbox Code Playgroud)

如果我创建一个 vanilla geom_raster,我会在 x 和 y 数据中得到间隙:

ggplot(Data,aes(Times,Frequency)) +
  geom_raster(aes(fill = ERSP))
Run Code Online (Sandbox Code Playgroud)

默认

如果我做Frequency一个因子,它会填补 y 的空白;但是,沿 x 轴的间隙仍然存在:

  ggplot(Data,aes(Times,factor(round(Frequency,digits=1)))) +
  geom_raster(aes(fill = ERSP))
Run Code Online (Sandbox Code Playgroud)

以 y 作为因子

我可以通过制作Times一个因子来消除差距。

在此处输入图片说明

但是,管理scale_x_discrete这么多数据点很麻烦(注意 x 轴标签)。此外,这些时间数据是连续的,并不是真正的因子。

geom_raster没有width类似的论点geom_bar,我在geom_raster文档中看不到任何类似的内容。

有没有办法保持Times连续但消除观察之间的差距?

r heatmap ggplot2 geom-raster

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

无法将变量传递给级别

我正在使用大型数据框而不是将操作写入内存,我一直在努力做与管道一样多的操作.在尝试在中间步骤中检查我的因子水平时,我遇到了使用该levels功能的问题,并想知道是否有人可能知道问题是什么.

一个例子:

library(dplyr)
Data <- data.frame(x = rep(LETTERS[1:5],3),
                   y = sample(1:10,length(x), replace=T))
Run Code Online (Sandbox Code Playgroud)

通常的方式有效:

levels(Data$x)
[1] "A" "B" "C" "D" "E"
Run Code Online (Sandbox Code Playgroud)

它主要用于我使用sapply:

 Data %>% select(x) %>% sapply(levels)
     x  
[1,] "A"
[2,] "B"
[3,] "C"
[4,] "D"
[5,] "E"
Run Code Online (Sandbox Code Playgroud)

但管道不起作用并返回NULL:

Data %>% select(x) %>% levels()
NULL
Run Code Online (Sandbox Code Playgroud)

为什么要Data %>% select(x) %>% levels()回来NULL

有没有办法使用管道数据的水平?

r levels dplyr

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

标签 统计

r ×4

ggplot2 ×3

dplyr ×2

geom-raster ×1

heatmap ×1

levels ×1