Difference between revisions of "Visualization Tools"

From Self-Organization Wiki
Jump to: navigation, search
(Box plots with Python)
Line 44: Line 44:
  
 
  import matplotlib.pyplot as plt
 
  import matplotlib.pyplot as plt
  import numpy as np
+
   
 
 
 
  f = open("my_file.txt", "r")
 
  f = open("my_file.txt", "r")
 
  data = []
 
  data = []
Line 51: Line 50:
 
  for line in f:
 
  for line in f:
 
     data.append(float(line))
 
     data.append(float(line))
 
+
 
  plt.boxplot(data)
 
  plt.boxplot(data)
 
  plt.xlabel('my_x_value')
 
  plt.xlabel('my_x_value')

Revision as of 10:16, 8 March 2019

Box plot

A box plot is a good way to depict results where measurements have been taken over another parameter, for example the fitness of several independent runs of an evolutionary algorithm over the number of generations.

Box plots with R

The statistic software R can be installed quickly, e.g., on Debian/Ubuntu Linux by "apt-get install r-base". The data must be given in a tab-seperated file, where each column comprises the measurements for one box.

x <- read.table("datafilename.tsv")
postscript("outputfilename.ps")
boxplot(x)
dev.off()

The postscript command redirects the output to a postscript file. The last command flushes the output and closes the file.

Data manipulation with R

Sometimes it is necessary to postprocess data before plotting it.

x <- read.table("datafilename.tsv")

storing every nth column with n=3

y <- x[seq(1,ncol(x),3)]

storing every nth line with n=3, starting from first.

z <- x[(seq(1,nrow(x),3)), ]

Example script that selects every 6th column for data and plots it into a pdf file

y <- read.table("rboxplot.txt", col.names = seq(1,500,5), check.names=F)
z <- y[(seq(1,nrow(y),6)), ]
a <- z[seq(1,ncol(z),3)]
pdf("boxplot_fitness.pdf")
boxplot(a, xlab="Generation", ylab="Fitness")
dev.off()

Box plots with Python

This simple code shows how to load data from a text file (one-dimensional array), convert in float values and generate a Boxplot with the converted data.

import matplotlib.pyplot as plt

f = open("my_file.txt", "r")
data = []

for line in f:
   data.append(float(line))

plt.boxplot(data)
plt.xlabel('my_x_value')
plt.ylabel('my_y_value')
plt.title('My Boxplot')
plt.show()