Draw a line in a pm3d map - gnuplot

I have a and I want to overplot on it a .
I define the line as a 3d line with constant height and I thought that with this method I have the possibility to overplot them one to another but, unfortunately, I failed.
I realized in fact that the density map routine in gnuplot take the points of the line too.
This is my script:
reset
#set terminal pngcairo size 800,500 enhanced font 'Verdana,14'
#set output "map.png"
set title 'Map'
m_star=1.054
m_1=0.0093866
m_3=0.0078635
fact1 = (m_star+m_1)**0.5
fact2 = (m_star+m_3)**0.5
set pm3d map interpolate 1,1
set xrange [50.22:52.27]
set yrange [30.29:31.17]
splot "file.txt" u (fact1)*(($1)**(-1.5)):(fact2)*(($2)**(-1.5)):6 notitle ,\
"line.txt" notitle
And here the two files: line and density map.
It is possible to overplot them, in gnuplot?
Thanks a lot for your help !

If you set pm3d, this style is used for all plots unless you explicitely specify a different plotting style. So you must use
splot "file.txt" u (fact1)*(($1)**(-1.5)):(fact2)*(($2)**(-1.5)):6 ,\
"line.txt" with lines
in order to plot line.txt as line:

Related

Spacing between points in graph in gnuplot

As can be seen in the picture attached, the points become too cluttered after a certain point. How do I increase the spacing between points in that region?
Code:
set term jpeg size 1800,900
set output "plot.jpeg"
splot "3d_ME2_31.out" us 1:2:3 lc -1
set grid
set output
I have tried the "every" command but it increasing the spacing in the beginning region too where the point spacing is already high.
Any advice is appreciated. Thanks !
Edit: Data file ( the data to axes mapping is 1:2:3 )
0.94652E+03 0.46588E+02 0.82952E-01
0.94871E+03 0.61601E+02 0.16795E+00
0.95102E+03 0.74087E+02 0.29030E+00
0.95587E+03 0.94012E+02 0.65911E+00
0.95850E+03 0.10204E+03 0.91894E+00
0.96148E+03 0.10885E+03 0.12599E+01
0.96515E+03 0.11542E+03 0.17353E+01
0.96943E+03 0.12040E+03 0.23543E+01
0.97481E+03 0.12578E+03 0.32153E+01
0.98134E+03 0.13077E+03 0.43582E+01
0.98901E+03 0.13507E+03 0.58196E+01
0.99795E+03 0.13948E+03 0.76562E+01
0.10082E+04 0.14377E+03 0.99270E+01
0.10199E+04 0.14800E+03 0.12677E+02
0.10282E+04 0.14775E+03 0.14762E+02
0.10335E+04 0.14413E+03 0.16176E+02
0.10403E+04 0.14050E+03 0.18096E+02
0.10488E+04 0.13621E+03 0.20616E+02
0.10588E+04 0.13205E+03 0.23729E+02
0.10710E+04 0.12798E+03 0.27711E+02
0.10843E+04 0.12370E+03 0.32248E+02
0.10995E+04 0.11973E+03 0.37684E+02
0.11163E+04 0.11572E+03 0.43955E+02
0.11324E+04 0.11203E+03 0.50189E+02
0.11474E+04 0.10875E+03 0.56245E+02
0.11626E+04 0.10553E+03 0.62585E+02
0.11781E+04 0.10217E+03 0.69305E+02
0.11938E+04 0.99038E+02 0.76322E+02
0.12094E+04 0.96412E+02 0.83573E+02
0.12252E+04 0.94002E+02 0.91126E+02
0.12411E+04 0.91794E+02 0.98981E+02
0.12571E+04 0.89765E+02 0.10714E+03
0.12732E+04 0.87918E+02 0.11559E+03
0.12894E+04 0.86536E+02 0.12432E+03
0.13054E+04 0.84701E+02 0.13318E+03
0.13213E+04 0.82945E+02 0.14227E+03
0.13373E+04 0.81284E+02 0.15161E+03
0.13533E+04 0.79678E+02 0.16122E+03
0.13694E+04 0.78071E+02 0.17111E+03
0.13855E+04 0.76542E+02 0.18127E+03
0.14008E+04 0.74960E+02 0.19118E+03
0.14159E+04 0.73330E+02 0.20115E+03
0.14309E+04 0.71898E+02 0.21132E+03
0.14458E+04 0.70357E+02 0.22162E+03
0.14607E+04 0.68300E+02 0.23218E+03
0.14758E+04 0.66454E+02 0.24304E+03
0.14907E+04 0.64530E+02 0.25400E+03
0.15055E+04 0.62676E+02 0.26517E+03
0.15204E+04 0.60999E+02 0.27663E+03
0.15354E+04 0.59429E+02 0.28833E+03
0.15500E+04 0.57764E+02 0.30002E+03
0.15641E+04 0.56109E+02 0.31144E+03
0.15758E+04 0.53850E+02 0.32117E+03
0.15882E+04 0.51118E+02 0.33162E+03
0.16010E+04 0.48445E+02 0.34255E+03
0.16127E+04 0.45813E+02 0.35263E+03
0.16249E+04 0.43266E+02 0.36339E+03
0.16373E+04 0.40811E+02 0.37449E+03
0.16498E+04 0.38485E+02 0.38581E+03
0.16620E+04 0.36479E+02 0.39707E+03
0.16742E+04 0.34549E+02 0.40846E+03
0.16860E+04 0.32632E+02 0.41963E+03
It would be complicated to limit the point reduction to a certain region, but you can do it globally using the pointinterval property of the style with linespoints. If you want to hide the line you can set the linetype to "nodraw": with linespoints lt nodraw pi 5. But that would get you back to the same result as using every to filter the points. The nice thing about using pointinterval instead is that the line goes through all the points even though not all of them are shown. So a jog in the line can highlight an outlier that might otherwise be hidden.
#Plot every 5th point
splot 'DATA' with linespoints pointinterval 5
I would say whether your data points look cluttered or cramped does not only depend on your data but also on your viewpoint.
If you have so many data points why don't you simply plot it with lines? Or as Ethan suggested with linespoints and a certain pointinterval or pointnumber (check help lp).
Script:
set multiplot layout 2,1
set view 60,30
splot $Data u 1:2:3 w p pt 1
set view 71,333
splot $Data u 1:2:3 w p pt 1
unset multiplot
Result: (same datapoints just different viewing angles)

gnuplot: add values above bar graphs

my gnuplot script plot bar graphs in the following 2D format:
using the following sctipt:
set term pngcairo size 800,600
set termoption noenhanced
set title "$file_name" font "Century,22" textcolor "#b8860b"
set tics font "Helvetica,10"
#set xtics noenhanced
set ylabel "Fraction, %"
set xlabel "H-bond donor/aceptor, residue"
set yrange [0:1]
set ytics 0.1
set grid y
set key off
set boxwidth 0.9
set style fill solid 0.5
plot '<cat' using 2:xtic(1) with boxes
In order to add values above the bars, I've tried to modify it to
plot '<cat' using 0:2:xtic(1) with boxes, '' u 0:2:2 w labels offset 0,1
but the values were not added to the bars, with the following warning
"/dev/fd/63" line 17: warning: Skipping data file with no valid points
I can only test for Windows, but I assume cat under Linux is the equivalent for type under Windows.
So, what is your filename? I would say your filename is simply missing. Check help piped-data.
Something like the following should work:
plot '<cat myDataFile.dat' using 0:2:xtic(1) with boxes, '' u 0:2:2 w labels offset 0,1
But then, what is the difference to using directly the filename?
plot 'myDataFile.dat' using 0:2:xtic(1) with boxes, '' u 0:2:2 w labels offset 0,1

plot z value in each data point pm3d map

My question is about my code in gnuplot. I want to plot data with pm3d map and Matrix and want to plot the z value in each datapoint as well. I tried this:
set pm3d;set pm3d interpolate 0,0;set pm3d map;
set Palette rgb 33,13,10;splot 'filepath' Matrix
It is all working fine but I cannot plot the z values so I tried this one
splot 'filepath' Matrix using 1:2:(sprintf(%g,$3)) with labels
but this is also not working. Can anybody help me?
as #Bodo, wrote... "not working" is not enough and not helpful to others.
With your code, you must have gotten some error messages, provide them as well.
Several mistakes in your script:
set palette instead of set Palette
splot 'filepath' matrix instead of splot 'filepath' Matrix
sprintf("%g",$3) instead of sprintf(%g,$3)
To your actual problem:
splot requires 3D coordinates + label text, i.e. in your case x:y:z:z or 1:2:3:3
So, the following code is probably doing what you intended to do.
set pm3d
set pm3d interpolate 0,0
set pm3d map
set palette rgb 33,13,10
splot 'filepath' matrix u 1:2:3:(sprintf("%g",$3)) with labels

How to fix GNUPLOT replot issue

I set-up a multiplot like this:
set terminal wxt size 1500,900
set format x "%d%m%y %H:%M:%S"
set xdata time
set timefmt x "%Y%m%dT%H%M%S"
set key font ",6"
set lmargin 10
set rmargin 10
set multiplot layout 2,1
plot "output.txt" u 1:2 w lines axes x1y1, \
"output.txt" u 1:3 w lines axes x1y2
plot "output.txt" u 1:40 w lines axes x1y1, \
"output.txt" u 1:39 w lines axes x1y2
set y2tics border
unset multiplot
Which works, and gives me 2 plots, one above the other.
But pressing the "replot" button (or using zoom) causes the second plot to fill the window - completely hiding the first plot.
Yes, that's how replot behaves. The documentation says: „Note that in multiplot mode, replot can only reproduce the most recent component plot, not the full set.“.
So, what you can do is to put the whole set multiplot ... unset multiplot stuff in an external file, load it, and then load it again. Or put that stuff in a string and eval it several times.
I had the same issue. Solved it with a loop:
set term wxt enh
do for [IDX = 0:1] {
if (IDX==1) {
set terminal png enhanced
set output 'temp.png'
}
set multiplot
set size 1,1
set origin 0,0
plot sin(x)
set size 0.5,0.35
set origin 0.13,0.63
plot cos(x)
unset multiplot
}
set output
set term wxt enh
Here is another workaround. It does not answer the question directly, but it could give idea to other similar issues. Put header, and a footer 'reread', then two context could be choosen for a similar multiplot (done twice)
if (exists("rehearse")) rehearse=1+rehearse; set term x11
if (!exists("rehearse")) rehearse=0; set term png; set output sprintf("test_palette_%s.png", system("date +\"%F\""))
pr "rehearse=".rehearse; show term #<= comment printing
set samples 100; set isosample 100,100
set xrange [0:1]; set yrange [0:1]
set palette defined (0 "white", 1 "red")
set autoscale cbfix; unset colorbox; unset key
set multiplot layout 2,2
plot '++' using 1:2:1 with image
plot '++' using 1:2:2 with image
plot '++' using 1:2:(-$1) with image
plot '++' using 1:2:(-$2) with image
unset multiplot
if(rehearse < 1) reread

gnuplot : 3d plot an electromagnetic wave function

Is it possible to do this with gnuplot? Something like on this image (link)
http://i.stack.imgur.com/mZ3M0.gif
I cannot seem to be able to set x = sin(y) and z = sin(y) independently. seeking help!
Thank you!
Yes! You're in luck, I figured this out last week. Here is the gnuplot code I use:
#!/usr/bin/env gnuplot
reset
set term png lw 2
set out 'test.png'
set style data lines
# Set x,y,z ranges
set xr [0:10]
set yr [-2:2]
set zr [-2:2]
# Rotates so that plots have a nice orientation.
# To get parameters, plot in interactive terminal and use 'show view' command.
set view 45,30,1,1
set arrow from 0,0,0 to 10,0,0
unset border
unset tics
splot '+' u 1:(0):(sin($1)) t 'E', \
'+' u 1:(-sin($1)):(0) t 'B'
And here is the figure I get:
I don't have labels, but you can use set label and more arrows to reproduce your example.
You can also define curves like this parametrically:
set parametric
splot u,0,sin(u) title 'E',\
u,-sin(u),0 title 'B'
Note that the u here isn't shorthand for using as you'll often see. u is a dummy variable used in parametric "s"plotting by gnuplot.

Resources