在 R 中注释图

机器算法验证 r 时间序列 数据可视化 ggplot2
2022-03-19 09:26:51

这更像是一个“如何使用 R”的问题,而不是一个实际的核心统计问题,但我认为这里的 R 大师集中度使它成为一个很好的论坛。我正在刷新一个当前使用 gnuplot 的时间序列绘图包。第一步是接近当前图表,然后我希望以后能够从 R 中添加更多统计分析。

目前,gnuplot 生成的图表如下所示:

替代文字

R 中的相应图表如下所示:

替代文字

我对此感到相当满意。缺少的是 gnuplot 图下方的图例内容。我可以添加一个说明“In”和“Out”的图例,但如何最好地呈现平均值、最大值和最小值?我可以在图表中添加水平线并在图表区域内打印值,但位置可能会干扰实际图表。

3个回答

我确信有一种更优雅的方法可以做到这一点,但你可以试试这个:

Data <- data.frame(serie1 = cumsum(rnorm(100)), serie2 = rnorm(100), temps = as.Date(1:100, origin = "2000-01-01"))

 label <- c("In traffic [max 2.0G bps] [Avg 1.1G bps] [95% 1.8G bps] [Min 569.4M bps]", "Out traffic [max 2.0G bps] [Avg 672M bps] [95% 2.1G bps] [Min 154.3M bps]")

p <- ggplot(melt(Data, id = "temps"), aes(temps, value, group = variable, colour = variable))
p <- p + geom_line() +xlab("") + opts(legend.position = "bottom", legend.title = NULL)
p <- p + scale_colour_manual(values = c("red", "blue"), breaks = c("serie1", "serie2"), labels = label)

print(p)

沿着图例标签粘贴一些文本和数字结果的一种快速而肮脏的方法是简单地重命名因子水平。例如,

df <- data.frame(x=rnorm(100), y=rnorm(100), f=gl(2,50))
df$f2 <- df$f
levels(df$f2) <- paste(levels(df$f), tapply(df$y, df$f, mean), sep=": ")
p <- ggplot(data=df) + geom_point(aes(x=x, y=y, color=f2))
p + opts(legend.position = 'bottom', legend.title=NULL)

您可以将任何您想要的内容添加到新标签中,例如平均值、最小值、最大值等(例如,创建一个自定义函数,从中获得灵感summary(),返回您想要的值,并将它们附加到c("In","Out"))。

尝试使用directlabels包进行更多控制。就标题而言,如果您要自动生成图表,您可以简单地将其用作标题文本(在 LaTeX 或 HTML 中或您有什么)。希望这可以帮助。