我似乎无法在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) 所以我有这个例子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) 我正在编写一个使用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'.我必须做一些引用错误,但我无法得到解决方案.谢谢!
似乎创建一个列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)
我如何按组分割出一个非常小的情节,类似于:用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)
期望的输出类似于:
编辑
一个更好的方法来实现我想要的是使用method = 'pseudorandom'而不是'笑脸'.见
拆分beeswarm 2.
我正在使用 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 设置有什么误解?我非常感谢您的帮助和建议!
我没有找到一个骗子,虽然这肯定以前有人问过:/
如何在unlist没有小数的元素中创建数字列表(甚至向量)而不在那些首先没有小数的元素中创建小数(双关语半意图)。
unlist(list(1, 1.11))
#> [1] 1.00 1.11
Run Code Online (Sandbox Code Playgroud) 推理:我想轻松使用现成的连续尺度(来自任何提供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) 我已经奋斗了很长一段时间来寻找一种方法来改变带有六边形的 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)
我正在对一些患有某种疾病的患者进行一项研究,并在 3 个不同的时间点使用顺序量表评估功能状态。我想在这些时间点的堆叠条形图中连接多个组。
我查看了这些主题,但尚未使用这些建议使其发挥作用:
有没有一种有效的方法可以使用 ggplot2 在堆积条形图中的不同元素之间绘制线条?
请查看我最终希望该图如何从 R(在 PRISM 中生成)中看到三个时间点上这 6 个序数值中每一个的频率的图形表示(顶部组没有序数值为 3、5、6 的患者) ):
使用 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)