Hi,
What is the best/simplest to use package to create pictures with Plots() that can be exported to latex? Trying to avoid the regular png.
Hi,
What is the best/simplest to use package to create pictures with Plots() that can be exported to latex? Trying to avoid the regular png.
What is Plots()? Are you using the Plots package for plotting? If so, available output formats vary by backend, this overview should be helpful:
Plots is indeed a very good option, especially because it is also compatible with PGFPlots (LaTeX plotting) and thus it can save charts in .tex.
More complicated (but more flexible) packages include PGFPlotsX: https://github.com/KristofferC/PGFPlotsX.jl (it would be lovely to have it on Plots as a backend).
But then you would probably lose most of the power and flexibility, as Plots imposes a uniform frontend. Also, it already has a PGFPlots backend if you are just after the appearance and LaTeX compatibility.
Fair enough, I think you are right - some functionalities could be added via recipes though.
While this is technically true for most charts, the compatibility is not full. For instance, I remember that PGFPlots heatmaps were not fully supported in Plots.
How can I use PGFPlots and Plots together?
I tried
using Plots
pgfplots()
but this does not have the functionality of PGFPlots. For example, I cannot reproduce this simple example from the documentation of PGFPlots
It says Linear not defined
x = [1,2,3]
y = [2,4,1]
Axis(Plots.Linear(x, y))
It says Linear not defined
Also, the link you sent me above does not show how to save figures in .tex
Plots.jl works with multiple plotting backends by transforming a standard input syntax into backend-appropriate calls. Examples for PGFPlots: http://docs.juliaplots.org/latest/examples/pgfplots/
The linked page doesn’t explicitly state how to get tex output, but you can infer from
Command
savefigchooses file type automatically based on the file extension.
savefig(fn) # save the most recent fig as fn
that you should use
using Plots; pgfplots()
x, y = [1,2,3], [4,5,6]
plot(x,y)
savefig("path/to/directory/filename.tex")
which produces
\begin{tikzpicture}[]
\begin{axis}[height = {101.6mm}, ylabel = {}, xmin = {0.94}, xmax = {3.06}, ymax = {4.09}, xlabel = {}, unbounded coords=jump,scaled x ticks = false,xlabel style = {font = {\fontsize{11 pt}{14.3 pt}\selectfont}, color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000}, draw opacity = 1.0, rotate = 0.0},xmajorgrids = true,xtick = {1.0,1.5,2.0,2.5,3.0},xticklabels = {$1.0$,$1.5$,$2.0$,$2.5$,$3.0$},xtick align = inside,xticklabel style = {font = {\fontsize{8 pt}{10.4 pt}\selectfont}, color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000}, draw opacity = 1.0, rotate = 0.0},x grid style = {color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000},
draw opacity = 0.1,
line width = 0.5,
solid},axis x line* = left,x axis line style = {color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000},
draw opacity = 1.0,
line width = 1,
solid},scaled y ticks = false,ylabel style = {font = {\fontsize{11 pt}{14.3 pt}\selectfont}, color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000}, draw opacity = 1.0, rotate = 0.0},ymajorgrids = true,ytick = {1.0,2.0,3.0,4.0},yticklabels = {$1$,$2$,$3$,$4$},ytick align = inside,yticklabel style = {font = {\fontsize{8 pt}{10.4 pt}\selectfont}, color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000}, draw opacity = 1.0, rotate = 0.0},y grid style = {color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000},
draw opacity = 0.1,
line width = 0.5,
solid},axis y line* = left,y axis line style = {color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000},
draw opacity = 1.0,
line width = 1,
solid}, xshift = 0.0mm,
yshift = 0.0mm,
axis background/.style={fill={rgb,1:red,1.00000000;green,1.00000000;blue,1.00000000}}
,legend style = {color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000},
draw opacity = 1.0,
line width = 1,
solid,fill = {rgb,1:red,1.00000000;green,1.00000000;blue,1.00000000},font = {\fontsize{8 pt}{10.4 pt}\selectfont}},colorbar style={title=}, ymin = {0.91}, width = {152.4mm}]\addplot+ [color = {rgb,1:red,0.00000000;green,0.60560316;blue,0.97868012},
draw opacity = 1.0,
line width = 1,
solid,mark = none,
mark size = 2.0,
mark options = {
color = {rgb,1:red,0.00000000;green,0.00000000;blue,0.00000000}, draw opacity = 1.0,
fill = {rgb,1:red,0.00000000;green,0.60560316;blue,0.97868012}, fill opacity = 1.0,
line width = 1,
rotate = 0,
solid
}]coordinates {
(1.0, 2.0)
(2.0, 4.0)
(3.0, 1.0)
};
\addlegendentry{y1}
\end{axis}
\end{tikzpicture}
It’s in the works: https://github.com/JuliaPlots/Plots.jl/pull/2252
thank you all for the reply so far.
I still have hard time adjusting to pgfplots(), compared to, say, pyplot(). I don’t know if this is the right place, but for example with pgfplots() this doesn’t work
aa = rand(10)
bb = rand(10)
conf = [aa bb]
p = plot(rand(10),rand(10))
plot!(rand(10),ribbon=conf)
And even if I replace ribbon with errorBars, it still doesn’t run.