我有2个不等长度的数据集用于使用ggplots2进行绘图:
Data A;
column x column y
0.23 1.54
0.44 1.46
0.69 1.37
0.70 1.21
0.75 1.01
0.88 0.91
Data B:
column x column y
0.13 1.24
0.34 1.16
0.49 1.07
0.54 0.99
0.69 1.01
Run Code Online (Sandbox Code Playgroud)
我确定如何在ggplot2中编写代码来绘制这两个数据集.在两种情况下,显示为x轴的图=列x和y轴=列y.有谁可以帮助我吗?
詹姆士
假设您将数据集A和B作为data.frame:
A <- data.frame(x=1:5, y=11:15)
B <- data.frame(x=1:10, y=20:11)
Run Code Online (Sandbox Code Playgroud)
你必须把他们加在一起:
df <- rbind(A, B) # Join A and B together.
df
x y
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15
6 1 20
7 2 19
8 3 18
9 4 17
10 5 16
11 6 15
12 7 14
13 8 13
14 9 12
15 10 11
Run Code Online (Sandbox Code Playgroud)
然后你可以绘制它:
ggplot(data=df, aes(x=x, y=y)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
如果要按颜色区分数据集A和B中的点:
df$dataset <- c(rep("A", nrow(A)), rep("B", nrow(B)))
df
x y dataset
1 1 11 A
2 2 12 A
3 3 13 A
4 4 14 A
5 5 15 A
6 1 20 B
7 2 19 B
8 3 18 B
9 4 17 B
10 5 16 B
11 6 15 B
12 7 14 B
13 8 13 B
14 9 12 B
15 10 11 B
ggplot(data=df, aes(x=x, y=y, col=dataset)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
如果要按颜色和大小区分点和数据集A和B,并更改轴标签:
ggplot(data=df, aes(x=x, y=y, col=dataset, size=dataset)) + geom_point() +
scale_color_manual(name="Dataset", labels = c("Data A","Data B"), values=c("red", "blue")) +
scale_size_manual(name="Dataset", labels = c("Data A","Data B"), values=c(10, 5)) +
xlab("xxxx") + ylab("yyyy")
Run Code Online (Sandbox Code Playgroud)
请参阅教程或使用谷歌:).
一种选择是将数据放入一个 data.frame 中。ldply()这是一个使用from 的示例plyr(),假设您的 data.frames 名为d1and d2:
library(plyr)
> d3 <- ldply(list(d1 = d2, d2 = d2))
> rbind(head(d3,2), tail(d3,2))
.id column.x column.y
1 d1 0.13 1.24
2 d1 0.34 1.16
9 d2 0.54 0.99
10 d2 0.69 1.01
Run Code Online (Sandbox Code Playgroud)
或者在绘图时简单地将不同的数据集传递给不同的几何图形。像这样的东西:
ggplot() +
geom_point(data = d1, aes(column.x, column.y)) +
geom_point(data = d2, aes(column.x, column.y), colour = "red")
Run Code Online (Sandbox Code Playgroud)