Can graph with lines be generated in gnuplot in a linux terminal? - gnuplot

I want graphs with lines to be generated in gnuplot rather than points in a terminal. I have only terminal to work with and no gui interface (Centos).
i tried installing png/wxt terminal which failed. I want the output to be saved in a file but with lines unlike one with dumb terminal.

Displaying nice graphics in a terminal emulator window or on the bare linux console
The current recommendation for displaying graphics from gnuplot to the linux console (i.e. no windowing system at all) is to use a console terminal emulator such as yaft (https://github.com/uobikiemukot/yaft) that supports sixel graphics. With yaft as your console terminal you can run gnuplot and select set term sixel to generate very nice in-line graphics.
You can do essentially the same thing using xterm, so long as your copy of xterm was built with sixel graphics support. You must select the vt340 emulation mode. This allows in-line graphics generated by a remote machine that you have connected to via ssh.
$ xterm -ti 340
xterm> ssh some.remote.machine
[remote prompt] gnuplot
gnuplot> set term sixel
gnuplot> plot ...
Generating graphics to a file from a dumb terminal window
However none of this is necessary in order to create an output file from a terminal that is not capable of graphics. Gnuplot terminals png/tikz/pdf/postscript/emf/... etc all work without any requirement for terminal display. You can preview the plot with set term dumb and then switch to your prefered format for saving to a file.
set term dumb
plot sin(x) with lines # ugly plot but indicates ranges, etc
set term pdf
set output 'myplot.pdf'
replot

Related

Gnuplot: linetype Version 5.0 patchlevel 3

I am using gnuplot 5.9 patchlevel 3 and I wanted to use different lt thus I wanted to reproduce the following this tutorial from gnuplot 5.0 patchlevel 1.
In particular if I copy it and launch it both from term and as .eps I couldn't see dashed lines, here the output
In particular I do not understand the following line:
You will only see dashed lines if your current terminal setting permits it
What does it mean? How I can 'force' gnuplot to print the different dashed lines in .eps, .png or via screen?
I found this guide but its refer to a 4.2.5 version of gnuplot, even if I use:
set termoption dashed
or
set terminal x11 dashed
I can't see the dashed lines...Those are the terminals I can use in gnuplot 5.0 patchlevel 3 from help term:
canvas cgm context corel
dumb dxf eepic emf
emtex epslatex fig hpgl
latex mf mp pcl5
pop postscript pslatex pstex
pstricks push qms svg
tek40xx tek410x texdraw tgif
tkcanvas tpic vttek x11
xlib xterm
I red also this answer but gnuplot 5.0 doesn't support pngcairo (???) as a test, in fact, I just try:
set term pngcairo dashed
And I receive the answer:
Terminal type set to 'unknown'
^
unknown or ambiguous terminal type; type just 'set terminal' for a list
Thus I tried to install pngciaro following this page using homebrew which I found not so useful unfortunately due to the fact that the question about gnuplot 5.0 does not have an answer and because I receive some warning that could be connected with the installation of the pngcairo.
I am using gnuplot 5.9 patchlevel 3
Surely you mean 5.0.3? The image you attached shows dashed lines so what's your question? Then I tried this example script you link to with the eps terminal and it works fine as well on 5.0.3.
Gnuplot renders output using different "terminals", some of the more terminals do not support support dashed lines and this includes the default PNG terminal png, the png terminal from the cairo library, pngcairo, does however support dashed lines. Terminals must be integrated into your Gnuplot build at compile-time, so options must be flagged to enable certain terminals. If Gnuplot was not built with the cairo library then the pngcairo or epscairo terminals will not be available and you will receive that message
unknown or ambiguous terminal type; type just 'set terminal' for a list
when attempting to set you plot to one of those terminals. When you do set term it just displays the terminals which your build was compiled with.
Gnuplot 5 does support pngcairo, it just has to be built with it. Are you on OSX and have homebrew installed? Just install it with cairo support using
brew install gnuplot --with-cairo

Using gnuplot with a hidpi screen.

I am using gnuplot on a hidpi screen (276 dpi).
The plots I recover are hard to see properly, the lines too thin, the fonts and buttons too small.
Is there any way to configure gnuplot to scale up these parameters for hidpi screens automatically upon start?
gnuplot automatically loads an initialisation file on startup, that you can use to change the default linewidths etc. It accepts normal gnuplot syntax. Check help initialization to see how it's named and where to place it on your system.
Use e.g. set terminal wxt lw 2 to change the absolute default linewidth. The sizes given in a later plot command are just multiplicators for the terminal setting. The pointsize and border/tics linewidth are scaled accordingly.

Gnuplot script disappear after creation

I have a gnuplot script. My system is ubuntu 14.04. When In the terminal I type gnuplot myPlot. The plot will disappear. It is not remain on the screen. I this stack in saw similar question. But its system is windows. I want to know is there any solution for that on ubuntu 14.04 32 bit
PS: when I use gnuplot>-- I mean when I do not use script file-- I see the diagram and it does not disappear.
PS2 : this is my simple gnuplot script file :
set boxwidth 0.5
set style fill solid
plot "dataFile" using 1:2:xtic(2) with boxes
If you want the plotting window to remain open, you must call gnuplot with the -persist flag:
gnuplot -persist myPlot
There are already nice answers here, but the -persist flag did not work for me and enabling x11 force GnuPlot to use crapy XQuarts for windowing instead of beloved Qt. What worked for me was the
pause -1
command (from here) at the end of the script. According to the documentation
pause -1 # Wait until a carriage return is hit
I hope it helps.
If you do not want to call gnuplot with the extra argument (-persist), you can enable this functionality within your script, e.g.
set term x11 persist

output.png from gnuplot is not as good as the figure from prompt shell

I often plot graphs in gnuplot prompt shell, like this:
gunuplot> plot sin(x) with linespoints pointtype 3
and the figure showed up is great.
Today, I save the graph in a .png file, like this:
gnuplot> set term png
gnuplot> set output "output.png"
gunuplot> plot sin(x) with linespoints pointtype 3
Then, I open output.png with eog in Ubuntu, like this:
$ eog output.png
I found that, the output.png displayed in eog is not as good as the figure plotted in prompt shell.
Why is that? Do I need to adjust some settings before save the output.png?
PS
I found that a way around it, first,
set term postscript
set output "output.ps"
then in linux shell,
$ convert output.ps output.jpg
This way some sort of solve the my problem.
The source of your problems with the PNG quality is most likely the missing antialiasing in the png terminal of Gnuplot. Since you give no screenshots, I'm not sure what you mean when talking about bad linewidth, but here's how it looks for me (on MacOS). This screenshot shows the output of gnuplot's native aquaterm output:
If we create a png using set term png, the lines become "jumpy" and pixellated:
However, there is a version of the png terminal that uses the Cairo libs for rendering, and that makes the output far more smooth and nicer. set term pngcairo gives this result:
You can use set terminal to check whether this terminal version is available for you. If it is, this should save you conversion work and also give better image quality than a JPG (which is not an ideal format for line art).
The default size of the PNG image generated gnuplot with the PNG terminal is 640x480 pixels. This resolution in certain cases may result in "pixelated" graphs which are not as nice as those produced on screen with the default (wxt) terminal.
You can change the resolution of the output image using the size option:
set terminal png size <x,y>
where x and y are the desired numbers of pixels along the horizontal and vertical axis, respectively.
For example:
set terminal png size 1024,768
Please note that, images with larger resolution will result in proportionally larger files on disk. Alternatively you can try to use non-raster terminals like "post eps" or "pdf" if available on your machine, which may give you high quality scalable and (relatively) portable images without a large disk footprint.
Alternatively, if you want professional (publication-ready) quality images with gnuplot, you should have a look at the epslatex terminal. I have used it extensively for my thesis and my papers with very nice results, virtually no pixelation problems, portability when converting images to pdf, and almost all the capabilities of Latex.

gnuplot multiple graphs are not interactive

I am drawing multiple graphs via a shell script in gnuplot.
The graphs are drawn correctly, but am not am able to zoom in . Does any variable need to be set?
Here is the code:
--- for loop of script starts---
gnuplot -persist <<EOF
set term x11 1
set title "IP : $ip Upstream capacity:$UP_CAP kbps"
plot 'trace-0-dir1.txt' using (\$1-$min1):(\$2-\$1-$mindelay1) with lp
set term x11 2
set title "IP: $ip Downstream capacity:$DOWN_CAP kbps"
plot 'trace-0-dir2.txt' using (\$1-$min2):(\$2-\$1-$mindelay2) with lp
EOF
---for loop ends---
Once you switch away from the "x11 1" window the zooming is disabled. To regain control, you should switch back to the specific window (set term x11 1). Another issue is the x11 terminal. You should use wxt which can keep windows alive.
You can solve your issue by using the wxt terminal and separating the two plot commands, therefore not switching away from the window:
--- for loop of script starts---
gnuplot -persist <<EOF
set term wxt
set title "first"
plot x
EOF
gnuplot -persist <<EOF
set term wxt
set title "second"
plot x**2
EOF
---for loop ends---
With this, you have two zoomable windows open and you can still use your shell variables.
In general, you do not have to have console open in order to have active windows, just an appropriate terminal. Especially, the command
gnuplot --persist -e 'plot[0:10] sqrt(x)'
produces scrollable and zoomable windows if used with wxt. Try
gnuplot --persist -e 'set term wxt; plot[0:10] sqrt(x)'
Hope this helps.
AFAIK you are only able to zoom, scroll etc. if the gnuplot console is still active. Meaning, gnuplot must still be running.
To give zooming and scrolling a try, input the following sequence:
Enter the gnuplot console by typing gnuplot
plot a function with plot[0:10] sqrt(x) for example.
Try zooming (Ctrl + Mouse wheel) and scrolling (Mouse wheel / Shift + Mouse wheel) before exiting the gnuplot console.
If you run a script like
gnuplot --persist -e 'plot[0:10] sqrt(x)'
you cannot scroll or zoom anymore.

Resources