R 如何在每一行的顶部绘制线图?
我试着把每一行的线条画成一条线。它们的颜色应该不同。棘手的部分是如何为每行添加名称 下面是数据示例R 如何在每一行的顶部绘制线图?,r,R,我试着把每一行的线条画成一条线。它们的颜色应该不同。棘手的部分是如何为每行添加名称 下面是数据示例 df<- structure(list(name = structure(c(1L, 2L, 3L, 4L, 7L, 8L, 6L, 12L, 10L, 5L, 9L, 13L, 11L, 14L), .Label = c("A", "AAD", "ABC", "ACF", "ACN", "ADDCR", "ADR", "AFFT", "ARFT", "ASED", "ASEDZ",
df<- structure(list(name = structure(c(1L, 2L, 3L, 4L, 7L, 8L, 6L,
12L, 10L, 5L, 9L, 13L, 11L, 14L), .Label = c("A", "AAD", "ABC",
"ACF", "ACN", "ADDCR", "ADR", "AFFT", "ARFT", "ASED", "ASEDZ",
"AXED", "AZEDR", "AZERD"), class = "factor"), X1 = c(1487.2,
48705.7, 59.4, 1676, 998.6, 35936, 1573.8, 1553.8, 53.9, 56.8,
2432.2, 431.8, 820.1, 10866.9), X2 = c(3251, 5217.2, 64.2, 45.4,
65.8, 2937.6, 564, 659.6, NA, 68.9, 654.9, 130, 720.7, 1457.1
), X3 = c(6364.3, 2752.5, 147.9, 6647.6, 21444.6, 1512.2, 5615,
2190, 506.3, 2150.3, 273.2, 1922.9, 10762, 12900.8), X4 = c(4942.3,
3885.8, 248.8, 7643.5, 12741.5, 2141.8, 5407.1, 2486.4, 542.9,
5058.1, 846.7, 5322, 6887.4, 7000.6), X5 = c(2301.2, 2173.5,
313.1, 14112.1, 8298.2, 1615.7, 7516.3, 3094.1, 777.8, 12007.9,
901.4, 9291.9, 4670.1, 3629.5), X6 = c(2779.1, 5564, 211.7, 9172.2,
9581.5, 2136.2, 7630.7, 3986.6, 440.9, 6898.1, 2280.4, 6311.1,
4080.4, 4843.9)), .Names = c("name", "X1", "X2", "X3", "X4",
"X5", "X6"), class = "data.frame", row.names = c(NA, -14L))
我不明白,一个图例是不够的?@S Rivero如果行数太多,那么图例就非常混乱,不是吗?@nik-…如果行数太多,名称就会混乱和重叠。一般的解决方案是不在一个绘图上绘制多条线。有14组独立的数据,我想我从来没有见过一个合理的单一情节。你可能会考虑像GGPROT2这样的“刻面”情节很容易——这已经很好了。它使所有的名字重叠。是否有避免重叠的方法?根据您有多少行,您可以通过如下修改listtop.points,rot=45,cex来调整字体大小、名称位置和旋转=1@nik-我的回答有用吗?我接受并喜欢它。你能补充一些解释吗?因此,我将学习确保-基本上,在继续绘图之前,我们首先必须获得良好的数据结构。在这个特殊的例子中,我首先转置了数据,然后使用melt函数来获得更好的结构。然后简单地用geom_线绘制线。要添加标签,可以使用directlabels软件包并查看?direct.label。如果你需要进一步解释,请告诉我。
library(reshape2)
library(ggplot2)
library(directlabels)
n <- df$name
df <- as.data.frame(t(df[,-1]))
colnames(df) <- n
rownames(df) = NULL
df$x = row.names(df)
mlt = melt(df)
p <- ggplot(data = mlt, aes(x = x, y = value,
group = variable, color = variable)) +
geom_line()
direct.label(p, list(last.points, hjust = -0.25))