小编Dan*_* C.的帖子

在图例ggplot2周围画一个框

我创建了一个带有自定义图例的情节ggplot2.我试图在图例中的所有项目周围绘制一个框,但是我只能在每个单独的项目周围绘制一个框.如何围绕所有项目只创建一个框?

library(ggplot2)

ggplot(mpg, aes(displ, cty)) + 
  geom_point(aes(shape = "Data")) +
  stat_smooth(aes(linetype = "Regression"), method = "lm", 
              formula = y ~ x, se = FALSE, colour = 1, size = 0.5) +
  scale_shape_manual(values = 1) +
  labs(shape = "", linetype = "") +
  theme_classic() + 
  theme(panel.border = element_rect(colour = "black", fill=NA),
        aspect.ratio = 1, axis.text = element_text(colour = 1, size = 12),
        legend.background = element_rect(linetype = 2, size = 0.5, colour = 1))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r legend ggplot2 legend-properties

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

如何在使用 ggplot2 绘制的图中最小化由 patchwork 包的guide_area()函数创建的空白区域?

我用这个ggplot2包制作了 3 个地块。为了将绘图排列在一个图中,我使用了该patchwork包。在安排中,我将 2 个图放在顶部,在这些图下方放置通用图例,在通用图例下方放置第三个图。我使用该函数创建了公共图例空间guide_area(),但随之创建了一个大的未使用的空白区域。

如何才能将未使用的空白空间保持在最低限度?

library(ggplot2)
library(patchwork)

p1 <- ggplot(data = mpg,
             aes(x = fl,
                 y = displ)) +
  geom_col(aes(fill = cty))

p2 <- ggplot(data = mpg,
             aes(x = year,
                 y = hwy)) +
  geom_point(aes(color = drv))

p3 <- ggplot(data = mpg,
             aes(x = class,
                 y = displ)) +
  geom_col() +
  facet_grid(~year)

((p1+p2)/guide_area()/p3) +
  plot_layout(guides = "collect") &
  theme(legend.position = "bottom")
Run Code Online (Sandbox Code Playgroud)

空白区域保留在图形的不同大小和比例中(空白区域用红色标记)。

在此输入图像描述

whitespace r legend ggplot2 patchwork

10
推荐指数
1
解决办法
1198
查看次数

如何在R中创建分组箱图?

我想合并分组的三个数据集,并获得只有两个框的图形,1表示A,1表示B.你能建议如何获得吗?

我正在尝试在R中创建一个分组的箱图.我有两组:A和B,在每组中我有3个子组,每个子组有5个测量值.

以下是我构建盒子图的方式,但如果有人有更好,更短或更简单的方法,我会很感激

A1 <- c(1,2,9,6,4)
A2 <- c(5,1,9,2,3)
A3 <- c(1,2,3,4,5)
B1 <- c(2,4,6,8,10)
B2 <- c(0,3,6,9,12)
B3 <- c(1,1,2,8,7)

DF <- data.frame(A1, A2, A3, B1, B2, B3)

boxplot(DF, col = rainbow(3, s = 0.5))
axis(side = 1, at = c(2,5), labels = c("A","B"))
legend("topleft", fill = rainbow(3, s = 0.5), legend = c(1,2,3), horiz = T)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何正确(组合)A和B中的框组合,并在我尝试时将轴标题固定为简单的A和B?

我喜欢类似的东西

在此输入图像描述

customization plot r boxplot

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

如何使用 ggplot2 在同一绘图区域内绘制绘图的缩放?

这个问题看起来很难理解,但是为了说明一下,我举个图来举例:

在此输入图像描述

我正在尝试复制这张图。到目前为止,我已经单独完成了图形,但我不知道如何将它们组合在一起,如示例所示。

有什么帮助吗?

time <- seq(from = 0,
            to = 10,
            by = 0.5)

line_1 <- c(0, 0, 0, 66, 173, 426, 1440, 800, 1200, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
line_2 <- c(0, 0, 0, 0, 0, 0, 0, 0, 1000, 25000, 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

df <- data.frame(time, line_1, line_2)

library(ggpubr)

#the plot
ggplot(data = df, aes(x = time)) +
  geom_line(aes(y = line_2), color = …
Run Code Online (Sandbox Code Playgroud)

plot r zooming ggplot2

7
推荐指数
1
解决办法
7012
查看次数

如何将散点图添加到填充轮廓?

我有一个数据集,由 2 个变量(每个变量有 3 个值)的组合观察到的 9 个点组成,即

x <- c(0,10,100)
y <- c(0,25,30)
z <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3, ncol = 3, byrow = TRUE)
Run Code Online (Sandbox Code Playgroud)

用这些数据我创建了一个等高线图

filled.contour(x,y,z)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我分别从收集数据的点创建了散点图

A <- matrix(c(0,0,0,10,10,10,100,100,100), nrow = 3, ncol = 3) #As x
B <- matrix(c(0,0,0,25,25,25,30,30,30), nrow = 3, ncol = 3, byrow = TRUE) #As y
plot(A,B)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而,当我尝试将它们放在一起时,效果并不好。有人可以帮助我吗?如何正确地将散点图放在等高线图上?

x <- c(0,10,100)
y <- c(0,25,30)
z <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3, ncol = 3, byrow = TRUE)
A <- matrix(c(0,0,0,10,10,10,100,100,100), nrow = 3, ncol …
Run Code Online (Sandbox Code Playgroud)

r scatter-plot contour

6
推荐指数
1
解决办法
987
查看次数

如何使用ggplot2根据线条方向向路径添加多个箭头?

我有一个数据框,我想从中绘制路径。数据框还指示箭头应具有的方向。我一直在使用这个ggplot2包和geom_path()函数,但是,我想添加指示路径方向的箭头。我使用了该arrow()函数,但我不知道如何按照我想要的方式制作箭头(下面的示例)。

library(ggplot2)

X <- c(0.596, 0.641, 0.695, 0.741, 0.788, 0.837,
       0.887, 0.937, 0.993, 0.984, 0.934, 0.886,
       0.838, 0.778, 0.738, 0.681, 0.642, 0.593)

Y <- c(23.630, 24.085, 24.643, 25.067, 25.491, 25.899,
       26.305, 26.670, 27.049, 27.025, 26.836, 26.636,
       26.429, 26.152, 25.965, 25.664, 25.442, 24.510)

Direction <- c(rep('up', 9), rep('down', 9))

DF <- data.frame(X, Y, Direction)

ggplot(data = DF,
       aes(x = X,
           y = Y)) +
  geom_path(arrow = arrow(ends = "both"))
Run Code Online (Sandbox Code Playgroud)

ggplot2结果

在此输入图像描述

期望的结果

在此输入图像描述

r path line direction ggplot2

6
推荐指数
2
解决办法
2011
查看次数

如何在R中的布局内调整单个图的边距?

我有一个由7个图组成的布局,一个在顶部,另一个6在第一个图的3x2矩阵下方展开。在我的布局中,这些图完全在一起,我想在第一个图和其他图之间留一点点高。我如何在R中做到这一点?

layout(matrix(c(1,1,2,3,4,5,6,7), 4, 2, byrow = T))

par(mar = c(0,0,0,0), oma = c(5,4,0.5,0.5), las =1)


plot(1:10, axes = T, type = "n", xlim = c(0,30), ylim = c(-3,2), las =1)
mtext(letters[1], side = 3, line = -1.5, adj = 0.025)

for (i in 2:7){
  plot(1:10, axes = F, type = "n", xlim = c(0,30), ylim = c(-3,1.8))
  mtext(letters[i], side = 3, line = -1.5, adj = 0.025)

  if (i %in% c(6,7))
    axis(side = 1)

  if (i %in% c(2,4,6))
    axis(side = …
Run Code Online (Sandbox Code Playgroud)

layout plot r margins par

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

如何使用plot_grid放置没有任何空间的地块?

我正在安排2x2地块。这些图共享相同的轴,所以我想将它们放在一起,例如

这段代码:

library(ggplot2)
library(cowplot)

Value <- seq(0,1000, by = 1000/10)
Index <- 0:10
DF <- data.frame(Index, Value)


plot <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot_grid(plot, plot, plot, plot, align = "hv", ncol = 2)
Run Code Online (Sandbox Code Playgroud)

产生

在此处输入图片说明

但我想要类似的东西:

在此处输入图片说明

如何获得类似的结果?

r ggplot2 r-grid cowplot

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

如何使用ggplot2绘制与绘图线交叉的水平线和垂直线?

我用一条线连接点绘制了一个图。在此图中,我想从 x 轴上的一点到与绘图线的交点绘制一条垂直线。在交点处,我想绘制一条到 Y 轴的水平线。我搜索了几个网站、论坛和教程,但仍然做不到。有什么帮助吗?

library(ggplot2)

X <- 1:5
Y <- c(2, 6, 4, 7, 12)

DF <- data.frame(X, Y)

ggplot(data = DF,
       aes(x = X,
           y = Y)) +
  geom_point() +
  geom_line() +
  geom_vline(xintercept = 4.5,
             linetype = 2)
Run Code Online (Sandbox Code Playgroud)

到目前为止的结果:

在此输入图像描述

期望结果的示例:

在此输入图像描述 在此输入图像描述

r line ggplot2 geom-hline geom-vline

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

如何在R中的plotmath中写远小于符号(&lt;&lt;)?

我正在尝试在 R 中编写 << 符号,但没有成功。有小费吗?

plot(expression(alpha<1))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

plot(expression(alpha<<1))

Error: unexpected input in "plot(expression(alpha<<"
Run Code Online (Sandbox Code Playgroud)

symbols equation r plotmath

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