【发布时间】:2019-11-18 22:58:39
【问题描述】:
我正在尝试绘制特定土地覆盖的训练区域像素的光谱响应。我有一个数据框,其中包含 7 个波段(列)中每一个的反射率值和每个特定像素的 ID。我希望每个 ID(像素)都有一条单独的线,并希望能够使用波段编号作为 x 轴。
我的数据框如下所示:
B1 B2 B3 B4 B5 B6 B7 等级
2 12345 13456 678 13456 7685 9870 12345 1
2 12345 1356 678 1456 7685 970 1235 2 ........
structure(list(B1 = c(12438, 12649, 12405, 12371, 13085, 12822
), B2 = c(11678, 11902, 11648, 11621, 12365, 12270), B3 = c(10982,
11467, 10961, 11021, 11478, 12159), B4 = c(10834, 11373, 10767,
10910, 10794, 12403), B5 = c(14453, 14079, 11810, 12060, 10403,
14923), B6 = c(13200, 14484, 11431, 12633, 8882, 16210), B7 = c(11414,
12318, 10370, 10641, 8020, 14293), class = structure(c(1L, 1L,
1L, 1L, 1L, 1L), .Label = c("2", "5", "9", "10", "12", "15",
"18", "20", "21"), class = "factor"), ID = 1:6), row.names = c(NA,
6L), class = "data.frame")
理想情况下,我希望能够在班级(总共 9 个)上进行过滤并绘制单个班级或多个班级以检查班级之间的重叠
我尝试使用 melt 对数据框进行反透视,并取得了一定的成功,但我必须按类别总结光谱值。它也不喜欢我的 x 轴值,因为它们是离散的,所以它不会连接线。我通过将整数列添加到每个波段 1-7 的数据帧来解决此问题。
对于此图,我想在图上将每个单独的像素(行)显示为单独的线(而不是摘要),以查看我是否选择了在所有 7 个波段中组合在一起的像素。这些波段将穿过 B1 - B7 的 x 轴
你可以在 ggplot 中放置一个情节的单个系列的数量是否有限制?有没有更简单的方法来绘制这个数据框,而不必使用熔化?
更新..
我使用了融化并将一个整数值添加到融化的数据帧中,以便我可以使用 x 轴 1:7 的连续值来对应波段编号。这是融化的数据框的头部。它看起来仍然无法处理单独的行,并希望我总结这些值。
structure(list(ID = 1:6, variable = structure(c(1L, 1L, 1L, 1L,
1L, 1L), .Label = c("B1", "B2", "B3", "B4", "B5", "B6", "B7"), class =
"factor"),
value = c(12438, 12649, 12405, 12371, 13085, 12822), band = c(1,
1, 1, 1, 1, 1)), row.names = c(NA, 6L), class = "data.frame")
【问题讨论】:
-
如果您以可重现的格式提供数据会有所帮助,例如,粘贴
dput(head(df))的输出,其中df是您的数据框。