Skip to content

Commit 868eb2a

Browse files
committed
Improved plotting script.
1 parent 4c9b32a commit 868eb2a

File tree

1 file changed

+53
-48
lines changed

1 file changed

+53
-48
lines changed

src/plot-netperfmeter-results.R

Lines changed: 53 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,9 @@
2525
2626
# Homepage: https://www.nntb.no/~dreibh/netperfmeter/
2727

28-
29-
# ###### Set global variable (given as name string) to given value ##########
30-
setGlobalVariable <- function(variable, value)
31-
{
32-
globalEnv <- sys.frame()
33-
assign(variable, value, envir=globalEnv)
34-
}
35-
28+
library("data.table", warn.conflicts = FALSE)
29+
library("dplyr", warn.conflicts = FALSE)
30+
# library("ggplot2")
3631

3732

3833
# ###########################################################################
@@ -42,6 +37,15 @@ setGlobalVariable <- function(variable, value)
4237
pdfMetadataFile <- NA
4338
pdfMetadataPage <- NA
4439

40+
41+
# ###### Set global variable (given as name string) to given value ##########
42+
setGlobalVariable <- function(variable, value)
43+
{
44+
globalEnv <- sys.frame()
45+
assign(variable, value, envir=globalEnv)
46+
}
47+
48+
4549
# ###### Create PDF info ####################################################
4650
openPDFMetadata <- function(name)
4751
{
@@ -94,7 +98,7 @@ closePDFMetadata <- function()
9498
# ###### Create a plot ######################################################
9599
createPlot <- function(dataSet, title, ySet, yTitle, baseColor, zSet, zTitle, vSet=c(), vTitle="",type="linesx", bookmarkLevel=3)
96100
{
97-
cat(sep="", "Plotting ", title, " ...\n")
101+
cat(sep="", pdfMetadataPage + 1, ": Plotting ", title, " ...\n")
98102

99103
xSet <- dataSet$RelTime
100104
xTitle <- "Time{t}[s]"
@@ -114,7 +118,7 @@ createPlot <- function(dataSet, title, ySet, yTitle, baseColor, zSet, zTitle, vS
114118
}
115119

116120
xAxisTicks <- getIntegerTicks(c(0, gRuntime)) # Set to c() for automatic setting
117-
yAxisTicks <- getIntegerTicks(ySet) # Set to c() for automatic setting
121+
yAxisTicks <- getIntegerTicks(ySet) # Set to c() for automatic setting
118122

119123
opar <- par(fg=baseColor)
120124
if(plotOwnFile) {
@@ -148,7 +152,8 @@ createPlot <- function(dataSet, title, ySet, yTitle, baseColor, zSet, zTitle, vS
148152
processPDFbyGhostscript(pdfName)
149153
}
150154
else {
151-
nextPageInPDFMetadata()
155+
# Already called by plotstd6():
156+
# nextPageInPDFMetadata()
152157
}
153158
}
154159

@@ -162,58 +167,58 @@ createPlot <- function(dataSet, title, ySet, yTitle, baseColor, zSet, zTitle, vS
162167
plotNodeStats <- function(inputData, nodeName)
163168
{
164169
addBookmarkInPDFMetadata(1, paste(sep="", "Node ''", nodeName, "''"))
170+
data <- inputData %>% filter( Action != "Lost" )
165171

166172
# ====== Input/Output Rates ==============================================
167173
addBookmarkInPDFMetadata(2, "Input/Output Rates")
168-
data <- subset(inputData, (inputData$Action != "Lost"))
169-
createPlot(data, paste(sep="", "Bit Rate Sent/Received at Node ''", nodeName, "''"),
174+
createPlot(data, paste(sep="", "Bit Rate Sent/Received on Node ''", nodeName, "''"),
170175
(data$RelBytes * 8 / 1000) / data$Interval, "Bit Rate [Kbit/s]", "blue4",
171176
data$Description, "Flow{F}", data$Action, "Action{A}")
172-
createPlot(data, paste(sep="", "Byte Rate Sent/Received at Node ''", nodeName, "''"),
177+
createPlot(data, paste(sep="", "Byte Rate Sent/Received on Node ''", nodeName, "''"),
173178
(data$RelBytes / 1000) / data$Interval, "Byte Rate [KiB/s]", "blue2",
174179
data$Description, "Flow{F}", data$Action, "Action{A}")
175-
createPlot(data, paste(sep="", "Packet Rate Sent/Received at Node ''", nodeName, "''"),
180+
createPlot(data, paste(sep="", "Packet Rate Sent/Received on Node ''", nodeName, "''"),
176181
data$RelPackets / data$Interval, "Packet Rate [Packets/s]", "green4",
177182
data$Description, "Flow{F}", data$Action, "Action{A}")
178-
createPlot(data, paste(sep="", "Frame Rate Sent/Received at Node ''", nodeName, "''"),
183+
createPlot(data, paste(sep="", "Frame Rate Sent/Received on Node ''", nodeName, "''"),
179184
data$RelFrames / data$Interval, "Frame Rate [Frames/s]", "yellow4",
180185
data$Description, "Flow{F}", data$Action, "Action{A}")
181186

182-
# ====== Input/Output Absolute ===========================================
183-
addBookmarkInPDFMetadata(2, "Input/Output Absolute")
184-
data <- subset(inputData, TRUE) # (inputData$Action != "Lost"))
185-
createPlot(data, paste(sep="", "Bits Sent/Received at Node ''", nodeName, "''"),
187+
# ====== Input/Output Volumes ============================================
188+
addBookmarkInPDFMetadata(2, "Input/Output Volumes")
189+
createPlot(data, paste(sep="", "Bits Sent/Received on Node ''", nodeName, "''"),
186190
(data$AbsBytes * 8 / 1000), "Bits [Kbit]", "blue4",
187191
data$Description, "Flow{F}", data$Action, "Action{A}")
188-
createPlot(data, paste(sep="", "Bytes Sent/Received at Node ''", nodeName, "''"),
192+
createPlot(data, paste(sep="", "Bytes Sent/Received on Node ''", nodeName, "''"),
189193
(data$AbsBytes / 1000), "Bytes [KiB]", "blue2",
190194
data$Description, "Flow{F}", data$Action, "Action{A}")
191-
createPlot(data, paste(sep="", "Packets Sent/Received at Node ''", nodeName, "''"),
195+
createPlot(data, paste(sep="", "Packets Sent/Received on Node ''", nodeName, "''"),
192196
data$AbsPackets, "Packets [1]", "green4",
193197
data$Description, "Flow{F}", data$Action, "Action{A}")
194-
createPlot(data, paste(sep="", "Frames Sent/Received at Node ''", nodeName, "''"),
198+
createPlot(data, paste(sep="", "Frames Sent/Received on Node ''", nodeName, "''"),
195199
data$AbsFrames, "Frames [s]", "yellow4",
196200
data$Description, "Flow{F}", data$Action, "Action{A}")
197201

198202
# ====== Jitter ==========================================================
199203
addBookmarkInPDFMetadata(2, "Quality of Service")
200-
data <- subset(inputData, (inputData$Action == "Received"))
201-
createPlot(data, paste(sep="", "Jitter at Node ''", nodeName, "''"),
204+
data <- inputData %>% filter( Action == "Received" )
205+
206+
createPlot(data, paste(sep="", "Jitter on Node ''", nodeName, "''"),
202207
data$Jitter, "Jitter [ms]", "gold4",
203208
data$Description, "Flow{F}", data$Action, "Action{A}")
204209

205210
# ====== Loss ============================================================
206-
data <- subset(inputData, (inputData$Action == "Lost"))
207-
createPlot(data, paste(sep="", "Bit Loss Rate at Node ''", nodeName, "''"),
211+
data <- inputData %>% filter( Action == "Lost" )
212+
createPlot(data, paste(sep="", "Bit Loss Rate on Node ''", nodeName, "''"),
208213
(data$RelBytes * 8 / 1000) / data$Interval, "Byte Loss Rate [Kbit/s]", "red4",
209214
data$Description, "Flow{F}")
210-
createPlot(data, paste(sep="", "Byte Loss Rate at Node ''", nodeName, "''"),
215+
createPlot(data, paste(sep="", "Byte Loss Rate on Node ''", nodeName, "''"),
211216
data$RelBytes / data$Interval, "Byte Loss Rate [KiB/s]", "red2",
212217
data$Description, "Flow{F}")
213-
createPlot(data, paste(sep="", "Packet Loss Rate at Node ''", nodeName, "''"),
218+
createPlot(data, paste(sep="", "Packet Loss Rate on Node ''", nodeName, "''"),
214219
data$RelPackets / data$Interval, "Packet Loss Rate [Packets/s]", "red3",
215220
data$Description, "Flow{F}")
216-
createPlot(data, paste(sep="", "Frame Loss Rate at Node ''", nodeName, "''"),
221+
createPlot(data, paste(sep="", "Frame Loss Rate on Node ''", nodeName, "''"),
217222
data$RelFrames / data$Interval, "Frame Loss Rate [Frames/s]", "red1",
218223
data$Description, "Flow{F}")
219224
}
@@ -246,16 +251,16 @@ plotQoSStatistics <- function(inputData, flowSummaryData, nodeName) {
246251
(inputData$FlowID == flowLevels[i]) &
247252
(inputData$IsActive == isActive) & (inputData$FlowID != -1) &
248253
(inputData$Action != "Lost"))
249-
createPlot(data, paste(sep="", "Bit Rate Sent/Received for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
254+
createPlot(data, paste(sep="", "Bit Rate Sent/Received for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
250255
(data$RelBytes * 8 / 1000) / data$Interval, "Bit Rate [Kbit/s]", "blue4",
251256
data$Action, "Action{A}", data$Description, "Flow{F}", bookmarkLevel=5)
252-
createPlot(data, paste(sep="", "Byte Rate Sent/Received for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
257+
createPlot(data, paste(sep="", "Byte Rate Sent/Received for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
253258
(data$RelBytes / 1000) / data$Interval, "Byte Rate [KiB/s]", "blue2",
254259
data$Action, "Action{A}", data$Description, "Flow{F}", bookmarkLevel=5)
255-
createPlot(data, paste(sep="", "Packet Rate Sent/Received for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
260+
createPlot(data, paste(sep="", "Packet Rate Sent/Received for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
256261
data$RelPackets / data$Interval, "Packet Rate [Packets/s]", "green4",
257262
data$Action, "Action{A}", data$Description, "Flow{F}", bookmarkLevel=5)
258-
createPlot(data, paste(sep="", "Frame Rate Sent/Received for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
263+
createPlot(data, paste(sep="", "Frame Rate Sent/Received for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
259264
data$RelFrames / data$Interval, "Frame Rate [Frames/s]", "yellow4",
260265
data$Action, "Action{A}", data$Description, "Flow{F}", bookmarkLevel=5)
261266

@@ -265,16 +270,16 @@ plotQoSStatistics <- function(inputData, flowSummaryData, nodeName) {
265270
(inputData$FlowID == flowLevels[i]) &
266271
(inputData$IsActive == isActive) & (inputData$FlowID != -1) )
267272
# & (inputData$Action != "Lost"))
268-
createPlot(data, paste(sep="", "Bits Sent/Received for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
273+
createPlot(data, paste(sep="", "Bits Sent/Received for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
269274
(data$AbsBytes * 8 / 1000), "Bits [Kbit]", "blue4",
270275
data$Action, "Action{A}", data$Description, "Flow{F}", bookmarkLevel=5)
271-
createPlot(data, paste(sep="", "Bytes Sent/Received for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
276+
createPlot(data, paste(sep="", "Bytes Sent/Received for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
272277
(data$AbsBytes / 1000), "Bytes [KiB]", "blue2",
273278
data$Action, "Action{A}", data$Description, "Flow{F}", bookmarkLevel=5)
274-
createPlot(data, paste(sep="", "Packets Sent/Received for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
279+
createPlot(data, paste(sep="", "Packets Sent/Received for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
275280
data$AbsPackets, "Packets [1]", "green4",
276281
data$Action, "Action{A}", data$Description, "Flow{F}", bookmarkLevel=5)
277-
createPlot(data, paste(sep="", "Frames Sent/Received for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
282+
createPlot(data, paste(sep="", "Frames Sent/Received for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
278283
data$AbsFrames, "Frames [s]", "yellow4",
279284
data$Action, "Action{A}", data$Description, "Flow{F}", bookmarkLevel=5)
280285

@@ -284,11 +289,11 @@ plotQoSStatistics <- function(inputData, flowSummaryData, nodeName) {
284289
(flowSummaryData$FlowID == flowLevels[i]) &
285290
(flowSummaryData$IsActive == isActive))
286291
if(length(data$FlowID) > 0) { # May be empty, if no packets have been sent in this direction!
287-
createPlot(data, paste(sep="", "Per-Message Delay for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
292+
createPlot(data, paste(sep="", "Per-Message Delay for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
288293
data$Delay, "Delay [ms]", "orange2",
289294
c(), NA, # data$NodeName, "Node{N}",
290295
type="p", bookmarkLevel=5)
291-
createPlot(data, paste(sep="", "Per-Message Jitter for Flow ''", flowName, "'' at Node ''", nodeName, "''"),
296+
createPlot(data, paste(sep="", "Per-Message Jitter for Flow ''", flowName, "'' on Node ''", nodeName, "''"),
292297
data$Jitter, "Jitter [ms]", "gold4",
293298
c(), NA, # data$NodeName, "Node{N}",
294299
type="p", bookmarkLevel=5)
@@ -307,15 +312,15 @@ plotQoSStatistics <- function(inputData, flowSummaryData, nodeName) {
307312
plotColorMode <- 2 # == cmColor
308313
plotOwnFile <- TRUE
309314
plotFontFamily <- "Helvetica"
310-
plotPointSize <- 18 # Use 22 for 10x10 plots
315+
plotPointSize <- 14
311316
plotLegendSize <- 0.80
312317
plotWidth <- -1
313318
plotHeight <- -1
314319
plotPaper <- "A4r" # Use "special" for manual values! Or: A4/A4r.
315320

316321

317322
# ###### Command-Line Arguments #############################################
318-
args=commandArgs(TRUE)
323+
args <- commandArgs(TRUE)
319324
# print(args)
320325

321326
for(i in 1:length(args)) {
@@ -338,9 +343,9 @@ for(i in 1:length(args)) {
338343

339344
# ====== Load input data ====================================================
340345
source(configFile)
341-
summaryData <- loadResults(summaryFile)
342-
summaryData <- subset(summaryData, (summaryData$Interval > 0)) # Avoids "divide by zero" on first entry
343-
flowSummaryData <- loadResults(flowSummaryFile)
346+
summaryData <- data.table(read.csv(summaryFile, sep="\t")) %>%
347+
filter(Interval > 0) # Avoids "divide by zero" on first entry
348+
flowSummaryData <- data.table(read.csv(flowSummaryFile, sep="\t"))
344349

345350
setGlobalVariable("gRuntime", round(max(summaryData$RelTime)))
346351
cat(sep="", "Runtime=", gRuntime, "\n")
@@ -356,10 +361,10 @@ if(!plotOwnFile) {
356361

357362

358363
# ====== Create plots for active and passive node ===========================
359-
data <- subset(summaryData, (summaryData$IsActive == 1) & (summaryData$FlowID != -1))
364+
data <- summaryData %>% filter( IsActive == 1, FlowID != -1 )
360365
plotNodeStats(data, NAME_ACTIVE_NODE)
361366

362-
data <- subset(summaryData, (summaryData$IsActive == 0) & (summaryData$FlowID != -1))
367+
data <- summaryData %>% filter( IsActive == 0, FlowID != -1 )
363368
plotNodeStats(data, NAME_PASSIVE_NODE)
364369

365370

@@ -382,7 +387,7 @@ if(!plotOwnFile) {
382387
stop(gettextf("status %d in running command '%s'", ret1, cmd1))
383388
}
384389

385-
# ------ Add PDF outlines and meta data ----------------------------------
390+
# ------ Add PDF outlines and metadata -----------------------------------
386391
cmd2 <- paste(sep="", "pdfembedfonts ", pdfFilePrefix, "-TEMP2.pdf", " ", pdfFilePrefix, ".pdf -optimize",
387392
" || mv ", pdfFilePrefix, "-TEMP2.pdf", " ", pdfFilePrefix, ".pdf")
388393
# cat(cmd2,"\n")

0 commit comments

Comments
 (0)