小编Tje*_*ebo的帖子

在ggplot2中缺少功能区

我似乎无法在ggplot2中设置功能区来显示.

这是一个组成的数据集:

Estimate <-  c(100,125,150,175)
GlobalDFData <- data.frame(Estimate, Upper = Estimate + 25, Lower = Estimate - 25, Date = paste0('Q', 1:4,'_16'), Area = 'Global', stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试的代码没有成功.我得到折线图但不是上下界

ggplot(GlobalDFData, aes(x = Date)) + 
  geom_line(aes(y = Estimate, group = Area, color = Area))+
  geom_point(aes(y = Estimate, x = Date))+
  geom_ribbon(aes(ymin = Lower, ymax = Upper))
Run Code Online (Sandbox Code Playgroud)

r ggplot2

4
推荐指数
1
解决办法
1120
查看次数

在数据框中添加名为 max 列的新列

所以我有这个例子df

df <- dput(structure(list(arts = structure(c(1L, 1L, 3L, 4L), .Label = c("art1", "art2"), class = "character"), scr1 = c(52L, 58L, 40L, 62L), scr2 = c(25L, 23L, 55L, 26L), scr3 = c(36L, 60L, 19L, 22L)), .Names = c("art_id", "scr1", "scr2", "scr3"), row.names = c(NA, -4L), class = "data.frame"))

> df
  art_id scr1 scr2 scr3
1      1   52   25   36
2      1   58   23   60
3      3   40   55   19
4      4   62   26   22
Run Code Online (Sandbox Code Playgroud)

dplyr用来总结的art_id

df …
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr

4
推荐指数
2
解决办法
1363
查看次数

R中的函数:使用list参数作为字符串

我正在编写一个使用list参数的函数.在这个函数中,我将列表转换为数据框使用stack().现在,我的问题是,如何使用函数参数中使用的列表名称重命名结果数据框(或任何其他数据框,如实际函数所需)的列?

我的功能:

stack_and_rename <- function(list) {

stacked_list <- stack(list)
names(stacked_list)[names(stacked_list)=='ind'] <- 'list' 
stacked_list

}
Run Code Online (Sandbox Code Playgroud)

虚拟列表:

fields <- list(A = c(2:4, 12:16, 24:28, 36:40, 48:49), 
           B = c(6:10, 18:22, 30:34, 42:46))
Run Code Online (Sandbox Code Playgroud)

但是调用stack_and_rename(fields) 显然会返回一个带有'values'和'list'列的数据框,尽管我想得到'values'和'fields'.我必须做一些引用错误,但我无法得到解决方案.谢谢!

arguments r function

4
推荐指数
1
解决办法
202
查看次数

dplyr :: mutate()不回收载体吗?

似乎创建一个列dplyr::mutate()不允许矢量回收.为什么?

例:

require(dplyr)
df <- data_frame(id = rep(1:5, each = 42), name = rep(letters[1:7], each = 6, times = 5))
Run Code Online (Sandbox Code Playgroud)

现在:

df %>% mutate (tp = c(1:42))  #results in 

Error in mutate_impl(.data, dots) : 
  Column `tp` must be length 210 (the number of rows) or one, not 42
Run Code Online (Sandbox Code Playgroud)

但是当然

df$tp <- c(1:42) #works
Run Code Online (Sandbox Code Playgroud)

我的变异代码是错误的还是回收根本不起作用mutate()?如果它有帮助,我使用dplyr0.7.2与RStudio 1.0.153(Mac)

r dplyr mutate

4
推荐指数
1
解决办法
306
查看次数

分裂的beeswarm情节

我如何按组分割出一个非常小的情节,类似于:用ggplot2分割小提琴情节

但是我想获得积分,而不是密度图.

@axeman在链接问题中提出的"计算密度方法"显然不起作用,因为beeswarm不使用密度.

#Desired output:
require(ggplot2)
require(ggbeeswarm)
my_dat <- data.frame(x = 'x', m = rep(c('a','b'),100), y = rnorm(200))
ggplot(my_dat, aes(x,y))+ geom_quasirandom(method = 'smiley')
Run Code Online (Sandbox Code Playgroud)

期望的输出类似于:

在此输入图像描述

  • 使用Adobe illustrator编辑生成的绘图,以显示我想要的内容...
  • 取决于组,中心轴上的点也应该向左/右躲闪.

编辑
一个更好的方法来实现我想要的是使用method = 'pseudorandom'而不是'笑脸'.见
拆分beeswarm 2.

r ggplot2

4
推荐指数
1
解决办法
564
查看次数

geom_boxplot 给出了错误的胡须

我正在使用 ggplot2 中的 geom_boxplot 制作箱线图。但是,我发现胡须长度不正确,我不知道为什么。这是我的数据:

value = c(1.3739117,0.8709891,3.4510461,0.8470309,1.4838725,0.6942611,1.3095816,3.0444649,19.2785424,1.0866242,0.9376845,2.2343836, 20.7975509, 20.3102489, 18.0046679,1.4197519)
data = data.frame(value)
ggplot(data, aes(y = value)) +
   stat_boxplot(geom = "errorbar", width = 0.3) +
   geom_boxplot(width = 0.5)
Run Code Online (Sandbox Code Playgroud)

我看到这样的情节:

在此处输入图片说明

第三个分位数与上部晶须重叠。我是手动计算的,结果如下:

summary(data)
Min.   : 0.6943  
1st Qu.: 1.0494  
Median : 1.4518  
Mean   : 6.0715  
3rd Qu.: 7.0895  
Max.   :20.7976
Run Code Online (Sandbox Code Playgroud)

基于 geom_boxplot 的解释:上须从铰链延伸到最大值,距离铰链不超过 1.5 * IQR(其中 IQR 是四分位距,或第一和第三四分位数之间的距离)。下部晶须从铰链延伸到最小的值,最多为铰链的 1.5 * IQR。

在我的情况下 IQR 是:7.0895-1.0494 = 6.0401

下须应为:0.6943 - 1.5*6.0401 = -8.36585

上须应为:7.0895 + 1.5*6.0401 = 16.14965

我知道负的下须是没有意义的,所以这里用最小值代替。但是为什么没有显示上面的晶须呢?我很困惑,我在网上找不到解决这个问题的例子。我对 ggplot 设置有什么误解?我非常感谢您的帮助和建议!

r ggplot2 boxplot

4
推荐指数
1
解决办法
312
查看次数

取消列出而不创建小数

我没有找到一个骗子,虽然这肯定以前有人问过:/

如何在unlist没有小数的元素中创建数字列表(甚至向量)而不在那些首先没有小数的元素中创建小数(双关语半意图)。

unlist(list(1, 1.11))
#> [1] 1.00 1.11
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
1
解决办法
52
查看次数

将标签放置在 binned / step colorbar guide 中的 bin 中间?

推理:我想轻松使用现成的连续尺度(来自任何提供scale_..._continuous等的包),用于有序因子类数据,例如mtcars$cyl. 因为这些数据只包含几种离散值,我想直接标记图例键,而不是 bin 限制。怎么做?

library(ggplot2)

ggplot(mtcars, aes(mpg, disp, color = cyl))+
  geom_point() +
  scale_color_continuous(limits = range(mtcars$cyl),
                         guide = guide_colorsteps(ticks.colour = "black"))
Run Code Online (Sandbox Code Playgroud)

不想要的:

hacky 方式,实际上是四个 (!) hacks,并且是不想要的。

# Hack 1 - create the colors manually from the palette. This is already annoying. 
cont_col <- colorRampPalette(c("#132B43","#56B1F7"))(length(unique(mtcars$cyl)))

# Hack 2- you need to modify the underlying draw_key function 
# from https://github.com/tidyverse/ggplot2/issues/2844
draw_key_polygon2 <- function(data, params, size) {
  lwd <- min(data$size, min(size) / 4)
  grid::rectGrob(
    width = grid::unit(1, "npc"),
    height …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

4
推荐指数
1
解决办法
63
查看次数

如何将 ggplot2 中图例键字形的形状更改为六边形?

我已经奋斗了很长一段时间来寻找一种方法来改变带有六边形的 ggplot2 的图例键。非常感谢任何帮助或指导!

library(ggplot2)
set.seed(123)
ggplot(iris) +
  geom_jitter(aes(x=Species,y=Sepal.Length,color=Species),width=0.25) +
  guides(color= guide_legend(override.aes = list(shape = 21)))
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2021 年 11 月 13 日创建(v2.0.1)

r legend ggplot2

4
推荐指数
1
解决办法
718
查看次数

使用 ggplot 2 使用线条或线段将堆栈条形图与多个组连接起来

我正在对一些患有某种疾病的患者进行一项研究,并在 3 个不同的时间点使用顺序量表评估功能状态。我想在这些时间点的堆叠条形图中连接多个组。

我查看了这些主题,但尚未使用这些建议使其发挥作用:

如何将线条放置在堆积条形图的边缘

有没有一种有效的方法可以使用 ggplot2 在堆积条形图中的不同元素之间绘制线条?

在堆积条形图中的不同元素之间绘制线条

请查看我最终希望该图如何从 R(在 PRISM 中生成)中看到三个时间点上这 6 个序数值中每一个的频率的图形表示(顶部组没有序数值为 3、5、6 的患者) ):

使用 PRISM 的预期图形 使用 PRISM 的预期图形

数据:

library(tidyverse)

mrs <-tibble(
  Score = c(0,1,2,3,4,5,6),
  pMRS = c(17,  2,   1,  0,  1,  0,   0),
  dMRS = c(2,  3,   2,  6,  4,  2,  2),
  fMRS = c(4,  4,  5,  4,  1,  1,  2)
Run Code Online (Sandbox Code Playgroud)

geom_line这是我到目前为止在使用或遇到问题之前尝试过的代码geom_segment(省略这些行,因为它只是扭曲了当前的数字)

mrs <- mrs %>% mutate(across(-Score,~paste(round(prop.table(.) * 100, 2)))) %>%
   pivot_longer(cols = c("pMRS", "dMRS", "fMRS"), names_to = "timepoint") %>% 
   mutate(Score=as.character(Score),
          value=as.numeric(value)) %>% …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 stackedbarseries geom-bar geom-segment

4
推荐指数
1
解决办法
2453
查看次数