In the below code, the appearance of the curve plotted takes into account linetype and linewidth but it completely ignores linecolor.
set style line 1 linetype 1 linewidth 10 linecolor rgb "blue"
plot \
myfile using 1:2 with lines linestyle 1
I have tried to change the order of these items, as well as different ways of specifying color, eg. "#0000FF" instead of "blue".
How can I change this to have the curve take on the color specified via linestyle 1?
This is gnuplot 5.4 on Mac OS / Big Sur, tried with "Terminal" and "iterm2".
IMPORTANT UPDATE
I'm using set term postscript eps. When i change this to set term pngcairo everything is ok.
So my updated question is: How to make this work also with set term postscript eps?
Apparently, the default setting for the postscript terminal is monochrome and you have to explicitely set color. I remember having seen similar questions in the past. I don't know why default is monochrome, maybe historical reasons? So, it seems to be a recurring "pitfall", since users nowadays think everything is in color per default ;-).
set term postscript eps color
That's what I get (on a "fresh" console) if I type set term postscript eps. Apparently, text is in color per default (i.e. labels and arrows), but the rest seems to be monochrome.
Options are 'eps enhanced defaultplex \
leveldefault monochrome colortext \
dashlength 1.0 linewidth 1.0 pointscale 1.0 butt noclip \
nobackground \
palfuncparam 2000,0.003 \
"Helvetica" 14 fontscale 1.0 '
set term epslatex
...and it works! (since i wanted "eps", and got "eps").
Incidentially (although it produces "png" instead of "eps") set term pngcairo and possible many more "term"s also work.
Strange thing is that I didn't get any warning when plotting with set term postscript eps that gnuplot was not able to apply the linestyle coloring with that terminal mode.
Related
I use gnuplot 5.4.5 for processing the following script:
set key enhanced font "Monospaced,13"
set grid
set style line 1 \
linecolor rgb '#a82828' \
linetype 1 linewidth 3 \
pointtype 5 pointsize 1.0
set xlabel "Entropy"
set xrange [-0.05:1.05]
set ylabel "Amortized work"
set terminal png enhanced font "Monospaced,13" size 500,350
set output 'EntropyToAmortizedWork.png'
plot 'EntropyToAmortizedWork.dat' with linespoints linestyle 1 notitle
replot
exit
The file EntropyToAmortizedWork.dat lives here.
All in all, I get:
Clearly, we have a typesetting artifact. How could I deal with it?
I can reproduce this on Win10 with gnuplot 5.4.5 and terminal png, but not with gnuplot 5.4.4.
Even terminal pngcairo seems to have a problem with 5.4.5, check the missing horizontal lines on some xticlabels.
So, suggested solution would be to go back to gnuplot 5.4.4 or earlier versions.
This would be a minimal script (no need for data).
Script:
### wrong ylabel with 5.4.5 and png terminal
reset session
set ylabel "This is the y-label"
set term png size 640,384
set output "SO74179232_png.png"
plot x
set term pngcairo size 640,384
set output "SO74179232_pngcairo.png"
plot x
set output
### end of script
Results:
gnuplot 5.4.5, terminal png
gnuplot 5.4.5, terminal pngcairo
gnuplot 5.4.4, terminal png
gnuplot 5.4.4, terminal pngcairo
I know the epslatex terminal can be used to have fonts in latex style.
But how can I emulate math latex fonts in the postscript terminal?
set term postscript size 5,4
set out "test.ps"
pl [][-1.1:1.1] sin(x) t "sin {/Italics x}"
set out
In math latex
it would look like:
So it seems I want a serif font.
IMHO this is far more trouble than it is worth. But if you really want to you can download Adobe Type 1 versions of the standard TeX fonts for use in PostScript, specifically for use by the gnuplot postscript terminal. Here is a demo.
#
# Demonstrate use of TeX Computer Modern fonts in gnuplot PostScript terminal
# This demo requires Adobe Type 1 fonts that may not be installed on your system.
# If necessary you can download them from
# http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/pfb/cmr10.pfb
# http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/pfb/cmmi10.pfb
# http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/patched-pfb/cmsy10.pfb
#
set term post eps color fontfile 'cmr10.pfb' fontfile 'cmmi10.pfb' fontfile 'cmsy10.pfb'
set output 'cmfonts.eps'
set title "Use of TeX Computer Modern fonts in gnuplot PostScript terminal"
set label 1 'Times-Roman: {/Times-Roman abcdefghABCDEFGH}'
set label 2 'cmr10: {/cmr10 abcdefghABCDEFGH}'
set label 3 'cmmi10: {/cmmi10 abcdefghABCDEFGH} {/cmmi10 \013\014\015\016\042}'
set label 4 'cmsy10: {/cmmi10 abcdefghABCDEFGH} {/cmsy10 \013\014\015\016\042}'
set label 1 at graph 0.05,0.6 left
set label 2 at graph 0.05,0.5 left
set label 3 at graph 0.05,0.4 left
set label 4 at graph 0.05,0.3 left
set xlabel "{/cmmi10 \013}"
plot [0:2*pi] sin(x) title "{/cmr10 sin({/cmmi10 \013})}"
Serif (Times) in combination with Oblique (Italic) also emulates a bit the look of latex math.
set term postscript size 5,4
set out "test.ps"
set label 1 'Serif: {/Serif abcdefghABCDEFGH}' at graph 0.05,0.5 left
set label 2 'Serif Oblique: {/SerifOblique abcdefghABCDEFGH}' at graph 0.05,0.4 left
set label 3 'Symbol: {/Symbol abcdefgh}' at graph 0.05,0.3 left
set label 4 'Symbol-Oblique: {/Symbol-Oblique abcdefgh}' at graph 0.05,0.2 left
pl [0:2*pi] sin(x) t "{/Serif sin} {/SerifItalics x}"
set out
This does not fully look as I asked for, but may look even better in documents using Times anyway.
The credit for Oblique goes to http://www.gnuplotting.org/postscript-terminal-with-italic-symbols/.
I'm using gnuplot 4.6 patchlevel 4. I encountered the following problem:
set terminal postscript eps monochrome
set output "test.eps"
splot x*y
produces a monochrome plot as requested, but
set terminal postscript eps monochrome
set output "test.eps"
set hidden3d
splot x*y
produces a colored plot.
I'm pretty sure that worked with earlier gnuplot versions. Is this a bug? Is there a workaround?
Thanks for your help!
(I saw that there was another problem with splot colors in an earlier version
(Issue regarding colors in splot), was the new problem possibly introduced in the bug fix?)
I`d like to write the math stuff into a plot using gnuplot 5:
I am using the terminal postscript enhanced because as far as I know this terminal is the only only capable of doing such things.
I used this code:
set label 1 at 400,200 '{/Symbol=50\362#_{/=15 350}^{/=15\154}}' front
This gets me everything except the subscribed averageunder the lambda symbol.
I tried everything with {,}and so on but I think I missing the part where I can escape the /SymbolStyle.
Many terminals support enhanced text, not only the postscript terminal.
In order to use another font than /Symbol for the subscript you could change the font explicitely to a different one for this. However, a better approach is to change the nesting so that /Symbol affects only two parts:
set label 1 at 0,0 '{/=50{/Symbol \362}#_{/=15 350}^{/=15{/Symbol \154}_{/=10 average}}' front
plot x
Output with gnuplot 5.0 with wxt is
If you're using the postscript terminal anyway, you could give a try to the epslatex terminal (or cairolatex):
set terminal epslatex standalone color colortext
set output 'equation.tex'
set label 1 at -5,5 '$\displaystyle\int_{350}^{\lambda_{\mathrm{average}}}$'
plot x
set output
system('latex equation.tex')
system('dvips equation.dvi')
system('ps2pdf equation.ps')
UPDATE: this issue has been resolved in newer versions (>5.0) of gnuplot; see #andyras' answer.
I am having difficulty getting gnuplot to create labels with bold and enhanced text in non-postscript terminals. The following script
#!/usr/bin/env gnuplot
reset
set terminal pdfcairo enhanced color lw 3 size 3,2 font 'Arial-Bold'
set output 'output.pdf'
set tics scale 0
plot -x title 'normal text', \
-2*x t 'enhanced_{text}', \
-3*x t '{/Arial-Bold attempt to specify_{font}}'
set terminal pngcairo enhanced color lw 3 size 400,300 font 'Arial-Bold'
set output 'output.png'
replot
set terminal postscript enhanced color lw 3 size 6,4 font 'Arial-Bold'
set output 'output.eps'
replot
reset
Produces the following eps (converted to png with convert output.eps -rotate 90 outputeps.png):
which is fine. However, when I use the pdf or png terminals the result looks like this:
Note that while all the label text should be bold, only the label without any enhanced text is bold. In addition, when I try to manually specify the font (last line title) the font is different (reverts to the default?).
Is this behavior I should expect when not using the postscript terminal? Is there another way to specify fonts (i.e. is the naming scheme different outside of postscript)?
Since version 5.0, gnuplot has a new syntax to handle this issue:
"normal text {/Times:Bold boldface-newfont} {/:Italic slanted-default-font } back to normal text"]
These brackets can also be nested.
For Better results in pdf format.
Plot the curves using enhanced eps terminal. Then use Imagemagic to convert your output to pdf format. using the commands
convert myPlot.eps myPlot.pdf
Default resolution with this commands generates a poor output. This can be overcome by using density option with a value of 300. Modified command looks like
convert -density 300 myPlot.eps myPlot.pdf
I found that this preserves all the text formatting of eps file in pdf file.