d.linegraph(1)
π¦ d.linegraph(1) π¦
okay bestie, this one lives in the GRASS GIS User's Manual, and it's genuinely so cute β it draws little line graphs right in your active graphics monitor display frame. no cap. π
β¨ NAME β¨
d.linegraph β generates and displays simple line graphs in the active graphics monitor display frame. that's the whole vibe. π
π·οΈ KEYWORDS π·οΈ
display, cartography
πΈ SYNOPSIS πΈ
d.linegraph
d.linegraph --help
d.linegraph [-xysl] x_file=string y_file=string[,string,...]
[directory=string] [y_color=string[,string,...]] [color_table=style]
[width=integer[,integer,...]] [title_color=string] [x_title=string]
[y_title=string] [title=string] [y_range=min,max]
[y_tics=float[,float,...]] [x_scale=float] [y_scale=float]
[icon=string] [point_size=float] [secondary_color=name]
[secondary_width=float[,float,...]] [--help] [--verbose] [--quiet]
[--ui]
π© Flags: π©
-xβ scale only X labels, not values. labels get the glow-up, the numbers stay exactly as they are. π-yβ scale only Y labels, not values. same energy, but for the Y side. β¨-sβ draw points. like, actually put the little dots down. π-lβ do not draw lines. just the points, no connecting-the-dots moment. π--helpβ print usage summary. your bestie when you're lost. π«Ά--verboseβ verbose module output. it will tell you EVERYTHING, and honestly? obsessed. π--quietβ quiet module output. shhh era. π€«--uiβ force launching GUI dialog. pop that window open, main character energy. π
π Parameters: π
x_file=string[required] β name of data file for X axis of graph. required, so likeβ¦ you literally cannot skip it. πy_file=string[,string,...][required] β name of data file(s) for Y axis of graph. yup, you can stack multiple, comma-separated. the more the merrier fr fr.directory=stringβ path to files. specifically, path to the directory where the input files are located. β¨y_color=string[,string,...]β color for Y data. give your lines a lewk. πcolor_table=styleβ name of color table. the palette menu, and it is LONG, so buckle up:
Options: aspect, aspectcolr, bcyr, bgyr, blues, byg, byr, celsius, corine, curvature, differences, elevation, etopo2, evi, fahrenheit, forest_cover, gdd, grass, greens, grey, grey.eq, grey.log, grey1.0, grey255, gyr, haxby, inferno, kelvin, magma, ndvi, ndwi, nlcd, oranges, plasma, population, population_dens, precipitation, precipitation_daily, precipitation_monthly, rainbow, ramp, random, reds, roygbiv, rstcurv, ryb, ryg, sepia, slope, soilmoisture, srtm, srtm_percent, srtm_plus, terrain, viridis, water, wave
and here's the tea on each one π΅:
aspect: aspect oriented grey colors [range: map values]aspectcolr: aspect oriented rainbow colors [range: 0 to 360]bcyr: blue through cyan through yellow to red [range: map values]bgyr: blue through green through yellow to red [range: map values]blues: white to blue [range: map values]byg: blue through yellow to green [range: map values]byr: blue through yellow to red [range: map values]celsius: blue to red for degree Celsius temperature [range: -80 to 80]corine: EU Corine land cover colors [range: 111 to 995]curvature: for terrain curvatures (fromv.surf.rstandr.slope.aspect) [range: map values]differences: differences oriented colors [range: map values]elevation: maps relative ranges of raster values to elevation color ramp [range: map values]etopo2: colors for ETOPO2 worldwide bathymetry/topography [range: -11000 to 8850]evi: enhanced vegetative index colors [range: -1 to 1]fahrenheit: blue to red for Fahrenheit temperature [range: -112 to 176]forest_cover: percentage of forest cover [range: 0 to 100]gdd: accumulated growing degree days [range: 0 to 6000]grass: GRASS GIS green (perceptually uniform) [range: map values]greens: white to green [range: map values]grey: grey scale [range: map values]grey.eq: histogram-equalized grey scale [range: map values]grey.log: histogram logarithmic transformed grey scale [range: map values]grey1.0: grey scale for raster values between 0.0-1.0 [range: 0 to 1]grey255: grey scale for raster values between 0-255 [range: 0 to 255]gyr: green through yellow to red [range: map values]haxby: relative colors for bathymetry or topography [range: map values]inferno: perceptually uniform sequential color table inferno [range: map values]kelvin: blue to red for temperature in Kelvin scale [range: 193.15 to 353.15]magma: perceptually uniform sequential color table magma [range: map values]ndvi: Normalized Difference Vegetation Index colors [range: -1 to 1]ndwi: Normalized Difference Water Index colors [range: -200 to 200]nlcd: US National Land Cover Dataset colors [range: 0 to 95]oranges: white to orange [range: map values]plasma: perceptually uniform sequential color table plasma [range: map values]population: color table covering human population classification breaks [range: 0 to 2e+09]population_dens: color table covering human population density classification breaks [range: 0 to 1e+09]precipitation: precipitation color table (0..2000mm) [range: 0 to 7000]precipitation_daily: precipitation color table (0..1000mm) [range: 0 to 10000]precipitation_monthly: precipitation color table (0..1000mm) [range: 0 to 1000]rainbow: rainbow color table [range: map values]ramp: color ramp [range: map values]random: random color table [range: map values]reds: white to red [range: map values]roygbiv: [range: map values]rstcurv: terrain curvature (fromr.resamp.rst) [range: map values]ryb: red through yellow to blue [range: map values]ryg: red through yellow to green [range: map values]sepia: yellowish-brown through to white [range: map values]slope:r.slope.aspect-type slope colors for raster values 0-90 [range: 0 to 90]soilmoisture: soilmoisture color table (0.0-1.0) [range: 0 to 1]srtm: color palette for Shuttle Radar Topography Mission elevation [range: -11000 to 8850]srtm_percent: color palette for Shuttle Radar Topography Mission using relative elevation [range: map values]srtm_plus: color palette for Shuttle Radar Topography Mission elevation (with seafloor colors) [range: -11000 to 8850]terrain: global elevation color table covering -11000 to +8850m [range: -11000 to 8850]viridis: perceptually uniform sequential color table viridis [range: map values]water: water depth [range: map values]wave: color wave [range: map values]
nglroygbivhas no description text at all in the original β it's just sitting there with an empty little description and[range: map values]. iconic mysterious behavior honestly. π
width=integer[,integer,...]β width of the lines. thick line era, we love to see it. β¨title_color=stringβ color for axis, tics, numbers, and title. Default:blackx_title=stringβ title for X data. Default: (empty)y_title=stringβ title for Y data. Default: (empty)title=stringβ title for Graph. Default: (empty)y_range=min,maxβ minimum and maximum value for Y axis (min,max). set your bounds, bestie. πy_tics=float[,float,...]β tic values for the Y axis. the little tick marks, so satisfying. πx_scale=floatβ scale for X values. πΈy_scale=floatβ scale for Y values. πΈicon=stringβ symbol for point. and ooooh the menu here is a whole aesthetic, look:
Options: basic/arrow, basic/arrow1, basic/arrow2, basic/arrow3, basic/box, basic/circle, basic/cross1, basic/cross2, basic/cross3, basic/diamond, basic/hexagon, basic/marker, basic/octagon, basic/pin, basic/pin_dot, basic/point, basic/pushpin, basic/star, basic/triangle, basic/x, demo/muchomurka, demo/smrk, extra/4pt_star, extra/adcp, extra/airport, extra/alpha_flag, extra/bridge, extra/dim_arrow, extra/dive_flag, extra/fiducial, extra/fish, extra/half-box, extra/half-circle, extra/offbox_ne, extra/offbox_nw, extra/offbox_se, extra/offbox_sw, extra/pentagon, extra/ping, extra/ring, extra/simple_zia, extra/target, geology/circle_cross, geology/half-arrow_left, geology/half-arrow_right, geology/strike_box, geology/strike_circle, geology/strike_cleavage, geology/strike_half-bowtie, geology/strike_line, geology/strike_parallel, geology/strike_triangle, legend/area, legend/area_curved, legend/line, legend/line_crooked, n_arrows/basic_compass, n_arrows/fancy_compass, n_arrows/n_arrow1a, n_arrows/n_arrow1b, n_arrows/n_arrow2, n_arrows/n_arrow3, n_arrows/n_arrow4, n_arrows/n_arrow5, n_arrows/n_arrow6, n_arrows/n_arrow7a, n_arrows/n_arrow7b, n_arrows/n_arrow8a, n_arrows/n_arrow8b, n_arrows/n_arrow9
Default: basic/circle
<rainbow>60+ icon options and the default is just a little circle. humble queen behavior.</rainbow>π
point_size=floatβ point size. Default:5secondary_color=nameβ color. specifically, color for point symbol edge color. Default:blacksecondary_width=float[,float,...]β width of point symbol lines. Default:0.1
okay that's the whole setup, bestie π more of this page is coming so don't go anywhere β we're just getting started. π¦β¨
β¨ DESCRIPTION β¨
okay so bestie, d.linegraph is the module that draws simple x,y line graphs (aka plots) from numerical data sitting in separate files. that's the whole vibe. π
πΈ Data format πΈ
So here's the tea: the X and Y data files are basically just a column of numbers each, one input number per line. Nothing fancy, no cap.
The program expects that each X value will have a corresponding Y value, which means the number of lines in each data input file should be the same. Like, they gotta match. Periodt.
Essentially, the X data becomes the X axis reference that the Y data gets plotted against as a line. So the X data should be a monotonically increasing progression of numbers β think "1,2,3,...", "0, 10, 100, 1000,...", "...-5,-1,0,1,5...". Basically ever-increasing, no backtracking. π
β οΈ Now the important bit: if you use multiple Y data files, the Y axis scale will be based on the range of minimum and maximum values from all Y files, and then all Y data gets graphed according to that one Y scale. So if you feed in multiple Y inputs with dissimilar units, the graph you get comparing them will be deceptive. π Like, don't do that. Or do, but know what you're doing.
π¦ File inputs π¦
If you provide the directory option, the paths to files can (and should) be only relative paths to those files. Is this recommended for scripting? Not really. But it is advantageous when you're typing paths manually, bestie.
For example, when all your files live in /home/john/data, you can just do this on the command line:
d.linegraph directory=/home/john/data x_file=x.txt y_file=y1.txt,y2.txt
so convenient. π«Ά
π Managing colors π
You've got options here, literally. You can specify the y_color option, the color_table option, or just leave the defaults and let the module do its thing to influence the color of the plotted lines. β¨
y_color option: colors specified here are used for drawing the lines in the graph. If you're using multiple Y data files, an equal number of colors may be used to control the colors of those lines. Colors get assigned to Y data in respect to the sequence of instantiation on the command line (so order matters, iykyk). It can be one of the GRASS GIS named colors, or the RGB values from 0-255 separated by colons (RRR:GGG:BBB).
color_table option: alternatively, you can use this to specify one of the GRASS GIS predefined color tables. cute and easy.
By default, a series of colors will be chosen by the module if none are provided upon invocation. The order of default colors is: red, green, violet, blue, orange, gray, brown, magenta, white, and indigo.
π The user is advised not to rely on the order of default colors, but to either use they_coloror thecolor_tableoption to obtain predictable and reproducible results. (do not trust the default rainbow, bestie, it will betray you.)
The color used for titles, axis lines, tics, and scale numbers is determined by the title_color option. You can provide one of the GRASS GIS named colors (such as gray, white, or black) or use the GRASS GIS colon-separated format for RGB (RRR:GGG:BBB).
π Titles, labels, and tics π
The title option specifies the text for the title of the graph, and it will be centered over the top of the graph. π
The x_title option is text to describe data for the X axis. It will be centered beneath the graph. Default is no text unless there's a need for a unit descriptor determined by the d.linegraph module β in which case a string such as "in hundreds" is generated.
The y_title option is text to describe data for the Y axis. It will be centered beneath the X data description. Similarly to the x_title option, default is no text unless there's a need for an auto-generated description.
In the case of graphs with multiple lines (multiple inputs for Y axis), the user may wish to use more specific text placement using the d.text or v.label programs. π
π NOTES π
For historical reasons, the d.linegraph module accepts titles of more than one word where the underscore character ("_") is used to represent spaces (" "). For example, "Census_data_1990" would be printed over the graph as "Census data 1990".
The use of underscores is not necessary to use as long as the parameter is quoted in the command line. In general, use of underscores is not recommended, and there's no need to use it at all in the GUI or when using d.linegraph in Python scripts. π
The way the program locates and labels tic marks is... less than perfect. π Like:
- although distances between Y tics are proportional to the value, they are not proportional on the X axis;
- decimal values between -1 and 1 can be printed on the X axis, but not on Y. (With respect to the latter, the input for Y values can all be multiplied by a factor of 10 before graphing.)
Depending on the user's needs, it might be easier or more appropriate to use a 3rd party tool such as xgraph, gnuplot, Matplotlib in Python, or R instead of d.linegraph. And for a more general solution for plotting in GRASS GIS, the user is advised to use the d.graph module. π
π§ EXAMPLE π§
The following can be executed in Bash to create the input data for this example. The user can just create these files in a text editor, save them, and specify path to them.
cat > x.txt <<EOF
1
3
4
6
9
EOF
cat > y1.txt <<EOF
50
58
65
34
27
EOF
cat > y2.txt <<EOF
10
20
35
50
45
EOF
The next command sequence creates a file plot.png in the current directory, which is the drawing made by d.linegraph.
d.mon start=cairo output=plot.png width=400 height=400
d.linegraph x_file=x.txt y_file=y1.txt,y2.txt
d.mon stop=cairo
slay. you just made a whole plot. π¨β¨
π SEE ALSO π
d.frame, d.text, v.label, d.graph, d.histogram
π AUTHOR π
Chris Rewerts, Agricultural Engineering, Purdue University
ποΈ SOURCE CODE ποΈ
Available at: d.linegraph source code (history)
Accessed: Saturday Jan 17 05:40:36 2026
Main index | Display index | Topics index | Keywords index | Graphical index | Full index
Β© 2003-2025 GRASS Development Team, GRASS GIS 8.4.2 Reference Manual
k that's the whole page bestie π
this was GRASS 8.4.2, d.linegraph(1), and the source/version line at the bottom said exactly that β GRASS 8.4.2 on the left, d.linegraph(1) on the right. go forth and graph responsibly, no cap π«ΆπΈ
π¦ where this page comes from
- fedora 44: grass 8.4.2-4.fc44 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms