小编Tje*_*ebo的帖子

得到R曲线类型"b"

在ggplot2中有一种方法可以获得情节类型"b"吗?见例子:

x <- c(1:5)
y <- x 
plot(x,y,type="b")
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想用它们的值替换点,以获得类似于这个着名示例的东西:

替代文字

编辑:这里有一些样本数据(我想在情节类型为"b"的方面绘制每个"猫"):

df <- data.frame(x=rep(1:5,9),y=c(0.02,0.04,0.07,0.09,0.11,0.13,0.16,0.18,0.2,0.22,0.24,0.27,0.29,0.31,0.33,0.36,0.38,0.4,0.42,0.44,0.47,0.49,0.51,0.53,0.56,0.58,0.6,0.62,0.64,0.67,0.69,0.71,0.73,0.76,0.78,0.8,0.82,0.84,0.87,0.89,0.91,0.93,0.96,0.98,1),cat=rep(paste("a",1:9,sep=""),each=5))
Run Code Online (Sandbox Code Playgroud)

此致,穆萨

r ggplot2

5
推荐指数
2
解决办法
1537
查看次数

R lapply():将列表中所有数据框中的所有列更改为数字,然后将所有值转换为百分比

题:

我对如何为数据框列表中的列批量处理 as.numeric() (或任何其他函数)感到有些困惑。

我知道我可以使用以下方法查看此列表中的特定数据框或列:

> my.list[[1]] 
# or columns within this data frame using:
> my.list[[1]][1]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将其应用于 lapply() 函数以将所有数据从整数更改为数字时,我的麻烦就来了。

# Example of what I am trying to do
> my.list[[each data frame in list]][each column in data frame] <- 
as.numberic(my.list[[each data frame in list]][each column in data frame])
Run Code Online (Sandbox Code Playgroud)

如果您能以任何方式帮助我,或者知道任何可以帮助我的资源,我将不胜感激。

背景:

我的数据框的结构如下例所示,其中我有 5 种栖息地类型以及有关单个物种家庭范围扩展到n 的面积的信息:

# Example data
spp.1.data <- data.frame(Habitat.A = c(100,45,0,9,0), Habitat.B =  c(0,0,203,45,89), Habitat.C = c(80,22,8,9,20), Habitat.D = c(8,59,77,83,69), Habitat.E = c(23,15,99,0,10))
Run Code Online (Sandbox Code Playgroud)

我有多个具有上述结构的数据框,它们已分配给列表对象:

all.spp.data <- …
Run Code Online (Sandbox Code Playgroud)

r lapply

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

基于值的 Geom_jitter 颜色

有没有办法根据数值为箱线图上的抖动点着色,例如:

ggplot(data, aes(y = y_var, x = x_var)) +
  geom_jitter(size = 2, aes(color = ifelse(y_var < 5, "red", "black)))
Run Code Online (Sandbox Code Playgroud)

我添加了这个可重现的示例,但不太有效(绘图上的颜色与抖动调用不对应):

a <- rnorm(100, mean = 5, sd = 1)
b <- as.factor(sample(0:1, 100, replace = TRUE))
test_data <- data.frame(cbind(a,b))
test_data$b <- as.factor(test_data$b)

ggplot(test_data, aes(y = a, x = b)) + 
  geom_boxplot()+
  geom_jitter(aes(color = ifelse(a < 5, "red", "black")))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2 jitter

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

将字母显示为 geom_text 图例的关键字形而不是默认的“a”

我正在使用 geom_raster 和 geom_text 在我的情节中的每个彩色矩形上放置一个字母。我也希望这封信出现在图例中的颜色框顶部,但不知道如何。

我尝试添加show.legend=TRUEgeom_text,但这会导致每个图例键中的字母“a”,而不是所需的字符。

所需的结果如下所示:

想要的结果

这是重现基本情节的代码:

library(tidyverse)
d <-tribble(
    ~a, ~b, ~c,
    "a", "l", "A",
    "a", "r", "F",
    "b", "l", "Q",
    "b", "r", "R"
)

ggplot(data=d, aes(x=a, y=b, fill=c)) +
    geom_raster(na.rm=TRUE) +
    geom_text(aes(label=c), size=3, na.rm=TRUE) 
Run Code Online (Sandbox Code Playgroud)

和输出:

没有所需标签的示例

这可能与此问题有关:https://github.com/tidyverse/ggplot2/issues/2004,但也许有解决方法?

r legend ggplot2

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

如何在ggplot2 R中向轴添加子文本

对于主y轴和x轴,我有通用标题,如"Tank's Ratio"和"Counts".我想要第二行标签,我指定比率和计数.例如.就在"Tank's Ratio"之下,我希望"#in water /#in sand"中的字体较小,但是沿着y轴.类似地,对于x轴.这是基本代码

data <- data.frame(set = c(1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4), density = c(1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 1, 3), counts = c(100, 2, 3, 76, 33, 12, 44, 13, 54, 36, 65, 1), ratio = c(1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 90, 1))

library(ggplot2)

ggplot(data, aes(x = counts, y = ratio)) + 
  geom_point() + 
  ylab("Tank's Ratio") + 
  xlab("Counts") 
Run Code Online (Sandbox Code Playgroud)

r axes subtitle ggplot2

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

R中ggplot2中多个图例的图例键之间的间距

我通过互联网搜索,但找不到解决我问题的方法。

为了更明确地说,我们有一个带有两个图例的图形,如下所示:

library(ggplot2)

ggplot() + 
  geom_point(data = mtcars, aes(x = disp, y = mpg, color = gear), 
             pch =20, size=18) + 
  geom_line(data = mtcars, aes(x = disp, y = mpg, size = disp/mpg*100)) +
  scale_size(range = c(0,3.5)) +
  guides(size = guide_legend("", order = 1, keywidth = 2, keyheight = 1.5), 
         color = guide_legend("", order = 2, keywidth = 1, keyheight = 1 )) +
  labs(x = "disp", y = "mpg") +
  geom_text(size=2.7, color = "grey29",  vjust=-0.8) +
  theme_bw() 

# ggsave("trial.png", …
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2 legend-properties

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

如何使用 ggplot 绘制矩阵

我不想用 ggplot 绘制矩阵。

这是一些示例代码:

# create a dummy matrix
d2 <- matrix(data=NA,nrow=21,ncol=21,dimnames=list(-10:10,-10:10))
sig <- 3;  mx <- 0; my <- 0;
for (jr in as.numeric(dimnames(d2)[[1]])){
  for (jc in as.numeric(dimnames(d2)[[2]])){
    d2[jr+11,jc+11] <- 1/sig/(2*pi)^.5*exp(-((jr-mx)^2+(jc-my)^2)/2/sig^2)
  }
}

# convert it to dataframe
d2.df <- data.frame(x=rep(as.numeric(dimnames(d2)[[1]]),each=ncol(d2)),y=rep(as.numeric(dimnames(d2)[[2]]),times=nrow(d2)),z=as.vector(d2))

# plot with geom_tiles
library(ggplot2)
ggplot(data=d2.df,aes(x=x,y=y,fill=z))+
  geom_tile()
  
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

可以在不将其转换为数据帧的情况下完成此操作吗?

r matrix ggplot2

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

将额外参数传递给 ggplot2 中的自定义几何图形

我正在创建一个自定义几何图形,并希望它带有一个名为 的额外参数,showpoints该参数对实际绘图执行某些操作或其他操作。例如,通过将其设置为 FALSE,geom 实际上会返回一个zeroGrob(). 我找到了一种方法来做到这一点,但是(i)它很笨重并且有点奇怪,并且(ii)我不完全理解我在做什么,这是一个坏兆头。问题是,当您定义新的统计数据时,可以运行setup_params,但 geoms 没有它:

与 Stat 和 Position 相比,Geom 略有不同,因为设置函数和计算函数的执行是分开的。setup_data 在位置调整之前运行,而 draw_layer 直到渲染时间才运行,晚得多。这意味着没有 setup_params,因为很难传达更改。

[来源]

基本上,我的代码的工作原理是,您可以使用附加参数来抑制点的绘制:

# draw the points by default
ggplot(mpg, aes(displ, hwy)) + geom_simple_point()

# suppresses drawing of the points
ggplot(mpg, aes(displ, hwy)) + geom_simple_point(showpoints=FALSE)
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的代码,基于扩展 ggplot2 教程

## Return the grob to draw. The additional parameter,
## showpoints, determines whether a points grob should be returned,
## or whether zeroGrob() should take care of not …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggproto

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

在 R 中使用 geom_label_repel 将标签放在前面,将引线放在后面

这里是新的,对 R 是半新的,所以希望我能正确地提出这个问题。

我有看起来像这样的数据(最后是完整的数据集):

Peak     Length    Height    Class   Label
Peak 16  16.542   1128.60   Class 2  Peak 16
Peak 10  16.592   74909.84  Class 4  Peak 10
Peak 6   16.930   21747.10  Class 2  Peak 6
Peak 9   17.177   98380.79  Class 2  Peak 9
Peak 20  17.235   168036.36 Class 4  Peak 20
Peak 11  17.264   85770.79  Class 5  Peak 11
Run Code Online (Sandbox Code Playgroud)

我正在使用标签制作一个情节geom_label_repel,代码如下:

library(ggplot)
library(ggrepel)

ggplot(data = df, aes(x = Length, y = Height, color = Class)) +
  geom_col()+
  geom_label_repel(aes(label = Label),
                   fill …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

修改垂直图例中关键字形之间的间距,同时保留关键字形边框

作为这个著名线程的后续。我决定提出一个新问题,因为这更具体针对垂直图例,并且给出的答案仍然没有提供完全令人满意的解决方案。对于多边形键字形,有人建议通过修改底层的draw_key函数来增加实际多边形字形和键边框之间的边距大小。但是,如果我想保留边框(例如黑色),这实际上不起作用。

当使用其他几何对象(例如,geom_line)时,我什至不知道如何增加字形和边框之间的边距 - 简要浏览一下中使用的draw_key函数ggplot2:::GeomLine(它不使用导出的draw_key函数),它我不清楚在哪里修改它。

所以,我的问题是是否有一种方法可以改变关键字形之间的实际空间,从而允许保留边框(例如,颜色=“黑色”),并且不增加字形大小。

library(ggplot2)

p <- ggplot(dplyr::filter(msleep, grepl("^C", order)), 
       aes(sleep_total, sleep_rem, color = order)) +
  geom_line(na.rm = TRUE) +
  theme(legend.key = element_rect(color = "black"))
p
Run Code Online (Sandbox Code Playgroud)

示例图:关键字形接触。

p + theme(legend.key.height = unit(.5, "in"))
Run Code Online (Sandbox Code Playgroud)

如果我删除颜色,看起来字形的间距会更大,但我希望关键字形的大小与上面相同,只是它们之间有间距。

GeomLine 中的底层draw_key

# ggplot2:::GeomLine$draw_key
#> ...
#> segmentsGrob(0.1, 0.5, 0.9, 0.5, gp = gpar(col = alpha(data$colour %||% 
#>                                                          data$fill %||% "black", data$alpha), fill = alpha(params$arrow.fill %||% 
#>                                                                                                              data$colour %||% data$fill %||% "black", data$alpha), 
#>                                            lwd = (data$size %||% 0.5) * …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggproto

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

标签 统计

r ×10

ggplot2 ×9

ggproto ×2

legend ×2

axes ×1

jitter ×1

lapply ×1

legend-properties ×1

matrix ×1

subtitle ×1