R ggplot中具有可变颜色的多个图
Multiple plots with variable color in R ggplot
我想在 R 中的同一张图上绘制多个图,并根据第三个变量对它们进行颜色编码,但我不知道如何在 ggplot2 中的一个数据框中执行此操作。
所以例如我的数据可能看起来像(编造的数据):
Time = [1 2 3 4 5]
YData = [10 11 9 10 12]
[ 5 3 4 6 9]
ColorData = [2.5 2.6 2.7 2.8 2.9]
[0.1 1.2 2.4 1.6 0.2]
我需要绘制 "YData[1,] vs Time",根据 ColorData[1,] 在某种色标上着色点。然后我需要根据 ColorData[2,] 在色标上用点绘制 "YData[2,] vs Time"。两个图都在同一个轴上。在实践中,我的矩阵会很大,所以我无法手动绘制每个东西。有什么想法可以做到这一点吗?
数据示例:
dx <- data.frame(Time = c(1, 2, 3 ,4, 5),
YData1 = c(10 ,11 ,9 ,10 ,12),
YData2 = c(5 ,3 ,4 ,6 ,9),
ColorData1 = c(2.5 ,2.6 ,2.7, 2.8, 2.9),
ColorData2 = c(0.1, 1.2, 2.4, 1.6, 0.2)
)
没有颜色的代码:
library(reshape2)
dx.melted = melt(dx, id = "Time")
ggplot(data = dx.melted, aes(x = Time, y = value)) + geom_point()
您应该在绘图前重塑数据。通常我们使用reshape
命令将数据放入long格式。在这里我使用的是手动方法,但通常会转换您的 32 列 data.frame.
dx_reshaped <- data.frame(Time=dx[,1],
stack(dx[,(grep('YData',colnames(dx)))]),
stack(dx[,(grep('Color',colnames(dx)))]))
然后像使用 ggplot2
一样绘制它。我正在使用 2 个 geom 来区分(ydata 类型 和 color 类型)。
library(ggplot2)
ggplot(data=dx_reshaped,aes(Time,values)) +
geom_point(aes(shape=ind),size=4) +
geom_line(aes(color=values.1,group=ind))
我想在 R 中的同一张图上绘制多个图,并根据第三个变量对它们进行颜色编码,但我不知道如何在 ggplot2 中的一个数据框中执行此操作。
所以例如我的数据可能看起来像(编造的数据):
Time = [1 2 3 4 5]
YData = [10 11 9 10 12]
[ 5 3 4 6 9]
ColorData = [2.5 2.6 2.7 2.8 2.9]
[0.1 1.2 2.4 1.6 0.2]
我需要绘制 "YData[1,] vs Time",根据 ColorData[1,] 在某种色标上着色点。然后我需要根据 ColorData[2,] 在色标上用点绘制 "YData[2,] vs Time"。两个图都在同一个轴上。在实践中,我的矩阵会很大,所以我无法手动绘制每个东西。有什么想法可以做到这一点吗?
数据示例:
dx <- data.frame(Time = c(1, 2, 3 ,4, 5),
YData1 = c(10 ,11 ,9 ,10 ,12),
YData2 = c(5 ,3 ,4 ,6 ,9),
ColorData1 = c(2.5 ,2.6 ,2.7, 2.8, 2.9),
ColorData2 = c(0.1, 1.2, 2.4, 1.6, 0.2)
)
没有颜色的代码:
library(reshape2)
dx.melted = melt(dx, id = "Time")
ggplot(data = dx.melted, aes(x = Time, y = value)) + geom_point()
您应该在绘图前重塑数据。通常我们使用reshape
命令将数据放入long格式。在这里我使用的是手动方法,但通常会转换您的 32 列 data.frame.
dx_reshaped <- data.frame(Time=dx[,1],
stack(dx[,(grep('YData',colnames(dx)))]),
stack(dx[,(grep('Color',colnames(dx)))]))
然后像使用 ggplot2
一样绘制它。我正在使用 2 个 geom 来区分(ydata 类型 和 color 类型)。
library(ggplot2)
ggplot(data=dx_reshaped,aes(Time,values)) +
geom_point(aes(shape=ind),size=4) +
geom_line(aes(color=values.1,group=ind))