Data File Formats
In this article, we will explain about supported formats of data files for RINEARN Graph 3D.
- Table of Contents -
CSV / TSV Files
For plotting data described in a file by RINEARN Graph 3D, it is necessary to describe coordinate values in a text file, and each values in a file should be separated by a specific character called as "delimiter". As a delimiter, the comma (,) and the tab-characters are widely used and they are called, as CSV and TSV files.
- CSV (Comma Separated Values)
- The delimiter is the comma( , ).
- TSV (Tab Separated Values)
- The delimiter is the tab-character. For RINEARN Graph 3D, you can use space-characters instead of tab-characters.
Both of CSV and TSV files are available for RINEARN Graph 3D.
About Matrix Format
Besides differences of delimiters, there are some formats about alignments of coordinate values. RINEARN Graph 3D supports "Matrix" and "3-Columns" formats.
Matrix Format
In matrix format, Z values of all coordinate points should be aligned as a matrix, and the row/column of the matrix represents X/Y values of the point. X values should be described in the first column, and Y values should be described in the first row (the left-top point in data should be a blank.).
The data file of the matrix format can be made by spreadsheet softwares easily as follows, and available for mesh/membrane plottings.
An Example for Generating A Matrix Format Data File by Spreadsheet softwares
To make the file by a spreadsheet software, with leaving the left-top cell blank, please input X values to the first column, and input Y values to the first row. Then please fill all cells in the matrix area with Z values of which rows/columns corresponds X/Y values of them. In the following figure, blue column represents X values, red row represents Y values, and green matrix area represents Z values.

Finally, please export the data as a CSV file, and open by RINEARN Graph 3D. If succeeded, points (circles) will be plotted at all coordinate points described in the file. You can plot them as a mesh / membrane by enabling "With Meshes" / "With Membranes" checkbox from the "Option" menu at the menu bar.
3-Columns Format
About 3-Columns Format
The matrix format is useful for generating files by spreadsheet softwares. However, if you want to generate files by programmings, the 3-columns format might be more useful.
In the 3-columns format, each text-line in a data file represents each coordinate point, and X/Y/Z values of a coordinate point should be described in a text-line, with being separated by the delimiter.
An example of 3-column format data (delimiter : comma)X2,Y2,Z2
X3,Y3,Z3
c,c,c
X100,Y100,Z100
How to contain multiple data-series in one file
You can contain multiple data-series in one file by inserting double-blank-lines for bounds of data-series. Different data-series will be plotted with different colors when "Gradation" option is disabled.
How to Represent a Mesh / Membrane by 3-Columns Format
Alignment
If you want to make 3-columns format file available for mesh / membranes plottings, data of coordinate points should be aligned as followings.
Step1 : Write coordinate values for all points on a line in the mesh toward X direction from end to end under the fixed Y value.
Step2 : Write a blank line.
Step3 : Change the Y value fixed in Step 1 to the Y value of the neighbour line, and reprocess Step 1. Repeate Step 1 to 3 for all lines in the mesh.
Let us show an example:

In 3-columns fromat, data of the above mesh is described as follows:
X12 Y12 Z12
X13 Y13 Z13
(blank line)
X21 Y21 Z21
X22 Y22 Z22
X23 Y23 Z23
(blank line)
X31 Y31 Z31
X32 Y32 Z32
X33 Y33 Z33
The following are examples of source code of programs to generate data of a mesh in 3-column format.
Example by C programming language
Let us generate a mesh data of Z = sin( X )+cos( Y ) by a program written in C programming language:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(void) { double x, y, z; int xi, yi; int xN = 10; // Number of lines for X direction int yN = 10; // Number of lines for Y direction // Ranges of the graph double xMin = -5.0; double yMin = -5.0; double xMax = 5.0; double yMax = 5.0; FILE *fp = fopen("a.tsv", "w"); if (fp == NULL) { fprintf(stderr, "failed to open the file"); return EXIT_FAILURE; } for( yi=0; yi<yN; yi++ ){ for( xi=0; xi<xN; xi++ ){ x = ( xMax - xMin ) * xi / (xN-1); y = ( yMax - yMin ) * yi / (yN-1); z = sin(x) + cos(y); // Write a coordinate point as a text-line fprintf(fp, "%lf\t%lf\t%lf\n", x, y, z); } fprintf(fp, "\n"); // Insert a brank line } return EXIT_SUCCESS; }
Example by C++
Let us generate a mesh data of Z = sin( X )+cos( Y ) by a program written in C++:
#include <fstream> #include <cstdib> #include <cmath> int main(){ double x, y, z; int xN = 100; // Number of lines for X direction int yN = 100; // Number of lines for Y direction // Ranges of the graph double xMin = -5.0; double yMin = -5.0; double xMax = 5.0; double yMax = 5.0; std::ofstream ofs( "a.tsv" ); for( int yi=0; yi<yN; yi++ ){ for( int xi=0; xi<xN; xi++ ){ x = ( xMax - xMin ) * xi / (xN-1); y = ( yMax - yMin ) * yi / (yN-1); z = sin(x) + cos(y); // Write a coordinate point as a text-line ofs<<x<<"\t"<<y<<"\t"<<z<<std::endl; } ofs<<std::endl; // Insert a brank line } ofs.close(); return EXIT_SUCCESS; }
Example by VCSSL
Let us generate a mesh data of Z = sin( X )+cos( Y ) by a program written in VCSSL:
import Math ; double x ; double y ; double z ; int xN = 100; // Number of lines for X direction int yN = 100; // Number of lines for Y direction // Write a coordinate point as a text-line double xMin = -5.0; double yMin = -5.0; double xMax = 5.0; double yMax = 5.0; int file = open ( "a.tsv", "wtsv" ); for( int yi=0; yi<yN; yi++ ){ for( int xi=0; xi<xN; xi++ ){ x = ( xMax - xMin ) * i / (xN-1) ; y = ( yMax - yMin ) * j / (yN-1) ; z = sin(x) + cos(y) ; // Write a coordinate point as a text-line writeln( file, x, y, z ) ; } writeln( file, "" ) ; // Insert a brank line } close( file )
Example by FORTRAN77
Let us generate a mesh data of Z = sin( X )+cos( Y ) by a program written in FORTRAN77:
IMPLICIT NONE REAL*8 X,Y,Z,X_MAX,Y_MAX,X_MIN,Y_MIN INTEGER X_I,Y_I,X_N,Y_N X_N = 100 ! Number of lines for X direction Y_N = 100 ! Number of lines for Y direction X_MAX = 5.0D0 X_MIN = -5.0D0 Y_MAX = 5.0D0 Y_MIN = -5.0D0 OPEN(UNIT=14,FILE='a.tsv',STATUS='UNKNOWN') DO Y_I = 0, Y_N DO X_I = 0, X_N X = (X_MAX-X_MIN)*DBLE(X_I)/DBLE(X_N-1) Y = (Y_MAX-Y_MIN)*DBLE(Y_I)/DBLE(Y_N-1) Z = SIN(X) + COS(Y) ! Write a coordinate point as a text-line WRITE(14,*) X, Y, Z ENDDO WRITE(14,*) ! Insert a brank line ENDDO CLOSE( 14 ) STOP END