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
savefig
chooses 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.