我创建了一个带有自定义图例的情节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)
我用这个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)
空白区域保留在图形的不同大小和比例中(空白区域用红色标记)。
我想合并分组的三个数据集,并获得只有两个框的图形,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?
我喜欢类似的东西
这个问题看起来很难理解,但是为了说明一下,我举个图来举例:
我正在尝试复制这张图。到目前为止,我已经单独完成了图形,但我不知道如何将它们组合在一起,如示例所示。
有什么帮助吗?
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) 我有一个数据集,由 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) 我有一个数据框,我想从中绘制路径。数据框还指示箭头应具有的方向。我一直在使用这个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结果
期望的结果
我有一个由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) 我正在安排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)
产生
但我想要类似的东西:
如何获得类似的结果?
我用一条线连接点绘制了一个图。在此图中,我想从 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 中编写 << 符号,但没有成功。有小费吗?
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)