按顺序绘制ggplot - R.

时间:2017-11-10 11:09:48

标签: r dataframe plot ggplot2

我有一个5*格式,可以与dataframe一起使用。它有3个变量:ID(1:10),图像(1:24)和值(一些索引)。这是头脑:

ggplot

到目前为止,我正在使用:

ID image value 1 1 1 0.0408963431 2 2 1 0.1366366334 3 3 1 0.1250891286 4 4 1 0.6980148222 5 5 1 0.1537595064 6 6 1 0.6088030843 7 7 1 0.1618058842 8 8 1 0.0007617827 9 9 1 -0.0098789526 10 10 1 0.7994192766 11 1 2 0.0326733369 12 2 2 0.0304698831 13 3 2 0.1100861336 14 4 2 0.5145008107 15 5 2 0.1424066920 16 6 2 0.6982905393 17 7 2 0.2033906321 18 8 2 0.0506560177 19 9 2 0.0223501625 20 10 2 0.8014009445

绘制我的ggplot(NDVIdfmean_forplot, aes(x = image, y= value, group = ID)) + geom_line()。虽然代码完成了工作,但x轴的顺序不正确。这是图像

Plot image

你可以看到订单是1,10,11,12 ... 19,2,20,21 ......我想按升序绘制我的数据,所以:1,2,3,4等

我一直在尝试正确订购数据

dataframe

但我无法解决这个问题。产生相同的输出。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我设法解决它,所以我会发布解决方案,以防有人帮助

问题是我的图像变量不是一个因素。我用过:

NDVIdfmean_forplot$image <- factor(NDVIdfmean_forplot$image,levels=unique(as.character(NDVIdfmean_forplot$image)) )

将其转换为适当的顺序。现在图表正确

答案 1 :(得分:0)

您可以尝试两种方法:

将列图像转换为数字:

library(ggplot2)

NDVIdfmean_forplot$image <- as.numeric(NDVIdfmean_forplot$image)
ggplot(NDVIdfmean_forplot, aes(image, value, group = ID, color = ID)) + 
    geom_line()

scale_x_discrete与已排序的image值结合使用:

ggplot(NDVIdfmean_forplot, aes(image, value, group = ID)) + 
    geom_path() +
    scale_x_discrete(limits = as.character(sort(as.numeric(unique(NDVIdfmean_forplot$image)))))