在ggplot2中将锯齿线转换为样条线

时间:2019-04-17 13:26:57

标签: r ggplot2 spline

我正在使用ggplot2绘制数据系列-性能与线程数的关系,用于几种不同数量的循环迭代。我已经获得了数据点以显示我需要的位置,并且我已经使用geom_line()来连接这些点。

我想获得连接这些点的平滑线,而不是锯齿线。不是拟合线/趋势线-只是外观漂亮的样条线,类似于创建平滑线形图时通过Excel或Google表格获得的样条线。

我敢肯定,做到这一点的最佳方法是将spline()函数与geom_line()结合使用,但是我对如何做到这一点感到困惑。在某个时候,我得到了一条样条曲线来显示整个图形,但是我似乎已经打破了这一点。在任何时候我都无法获得多条样条线来代替下图所示的多条锯齿线。

ggplot似乎是我要实现的目标的最短路径,但是我愿意接受不使用它的建议。

这是我现在在R脚本中得到的,创建了锯齿状的行:

#!/usr/bin/Rscript

# Read from stdin (pipe from runProj2 output) and write to txt before mod
data <- read.table('stdin', header=TRUE)
write.table(data, "data.txt", sep="\t", row.names=FALSE)
# Get rid of volume field to analyze performance vs. threads and nodes
data$Volume <- NULL

# Organize data by both threads and nodes & output for PDF incorporation
dataByThreads <- reshape(data, idvar = "Threads", timevar = "Nodes", direction = "wide")
dataByNodes   <- reshape(data, idvar = "Nodes", timevar = "Threads", direction = "wide")

write.table(dataByThreads, "dataByThreads.txt", sep="\t", row.names=FALSE)
write.table(dataByNodes, "dataByNodes.txt", sep="\t", row.names=FALSE)

# Plot
library(ggplot2)
library(reshape2)

# Melt data back into long format for ggplot
threads_long <- melt(dataByThreads,  id="Threads")
nodes_long   <- melt(dataByNodes, id="Nodes")

ggplot(data=threads_long,
       aes(x=Threads, y=value, color=variable)) +
       geom_point() +
       geom_line() +
       labs(y='MegaHeights per Second', x='Threads', color='Nodes') +
       ggtitle('Performance vs. Threads')

ggplot(data=nodes_long,
       aes(x=Nodes, y=value, color=variable)) +
       geom_point() +
       geom_line() +
       labs(y='MegaHeights per Second', x='Nodes', color='Threads') +
       ggtitle('Performance vs. Threads')

这是到目前为止我得到的:

from link

0 个答案:

没有答案