Skip to main content

plotting - Printing problem: PDF output has a plot error


In my Mathematica file I have several plots that I put together in a grid. One of the plots is coded with the following code:


gr1 = ListPlot[baseplateTemp2, Joined -> True, 
ImagePadding -> {{110, 30}, {5, 42}}, ImageSize -> Full,
AspectRatio -> .18, Frame -> {Left, Top, Right},
PlotRange -> {{first, last}, {-40, 80}},

FrameTicks -> {{Automatic, Automatic}, {Automatic, topaxis}},
BaseStyle -> {FontSize -> 14},
FrameLabel -> {{"Baseplate\n Temperature, \[Degree] C", ""}, { "",
"Time Offset, Days"}}, GridLines -> {botax, Automatic},
Axes -> None]

and is then grouped with another set of plots within a Grid:


Grid[{{gr1}, {grf10M}, {gr9}}]

The problem that ensues is the following: my typical output would look something like this on screen:



Plot on Mathematica


However, whenever I export the Mathematica slide show (by the way, I save a series of slides together— with similar cells as those shown in the first picture, as a pdf) as a pdf via


File > Save As... > PDF Document (*.pdf) 

I get a problem.


Now the problem isn't visible on screen: in fact, it looks exactly the same as the Mathematica output in terms of fidelity. It only becomes apparent when I print the pdf that I see an artifact that I have trouble identifying the root cause. Here is a scan of the printout that I made of the same cell shown in the first picture:


Scan of pdf printout


Edit 1: The artifact is readily seen in the second picture in the plot labeled "Baseplate Temperature, °C". You can see there is a line running through the 10 °C line that connects the end and beginning points.


As far as things I have attempted: I tried to Export the entire notebook but I have not been successful. If anyone has any ideas, remember that the notebook is in a slide show format currently and I would like to keep it in that format.


I read through the answers in Graphics elements do not line up perfectly in exported PDFs and tried some of them but they don't really work that well. I'll edit this question tomorrow to try and post more detail as to what happens when I try to Export the entire notebook as a pdf.



Aside: if anyone wants to see the pdf output to confirm that they don't see the line either on screen but only on paper: send me a link of a good pdf hosting website that I could use— possibly Scribd, but I would prefer something like an imgur equivalent.


Edit 2: I'm using Mathematica 9 currently. Not sure if this problem has been resolved in the updated versions of Mathematica. Will send Wolfram Tech Support a query in parallel with this post.


Also, I'll try to modify the data/code provide to allow you to replicate the situation.


Edit 3: I tried using Export to export the notebook as a pdf:


Export["notebook.pdf", EvaluationNotebook[]];

from How To | Export to PDF.


The result is still the same: there is a similar, if not exactly the same artifact as before.


The idea was brought by Szabolcs in Graphics elements do not line up perfectly in exported PDFs.


Update: still waiting on a response email from Wolfram Technical Support. In an auto-reply message it says that it might take up to three days for a formal response.



Edit 4: Here's a link to the pdf that I am having problems with: Thermal Cycle Plot



Answer



This error seems to be related to a clipping error I encountered myself (see Mathematica Stack Exchange, question 193901 for details and workaround). However, as I consider it to be of very general nature and the question was not precise enough I opened up a new question. I think these errors result from a clipping error/bug in mathematica for the PlotRange command, if large data sets outside the limits given by PlotRange exist. I found a workaround by chopping the datasets before plotting so that only one nearest neighbor outside the plotting range remains in each direction. Maybe you can try the same with your data set before plotting?


UPDATE (27.03.2019) - Problem seems to be limited to Windows .pdf


See: Mathematica Stack Exchange, question 193901


UPDATE (02.04.2019) - Received answer from Wolfram:


Please see the update to my question on Mathematica Stack Exchange, question 193901. At least my problem of weird ghost-lines was reproduced by Wolfram support and a report was forwarded to the development team to get it fixed. Chopping the datasets before plotting seems to be an effective workaround.


Comments

Popular posts from this blog

plotting - Filling between two spheres in SphericalPlot3D

Manipulate[ SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, Mesh -> None, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], {n, 0, 1}] I cant' seem to be able to make a filling between two spheres. I've already tried the obvious Filling -> {1 -> {2}} but Mathematica doesn't seem to like that option. Is there any easy way around this or ... Answer There is no built-in filling in SphericalPlot3D . One option is to use ParametricPlot3D to draw the surfaces between the two shells: Manipulate[ Show[SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], ParametricPlot3D[{ r {Sin[t] Cos[1.5 Pi], Sin[t] Sin[1.5 Pi], Cos[t]}, r {Sin[t] Cos[0 Pi], Sin[t] Sin[0 Pi], Cos[t]}}, {r, 1, 2 - n}, {t, 0, Pi}, PlotStyle -> Yellow, Mesh -> {2, 15}]], {n, 0, 1}]

plotting - Plot 4D data with color as 4th dimension

I have a list of 4D data (x position, y position, amplitude, wavelength). I want to plot x, y, and amplitude on a 3D plot and have the color of the points correspond to the wavelength. I have seen many examples using functions to define color but my wavelength cannot be expressed by an analytic function. Is there a simple way to do this? Answer Here a another possible way to visualize 4D data: data = Flatten[Table[{x, y, x^2 + y^2, Sin[x - y]}, {x, -Pi, Pi,Pi/10}, {y,-Pi,Pi, Pi/10}], 1]; You can use the function Point along with VertexColors . Now the points are places using the first three elements and the color is determined by the fourth. In this case I used Hue, but you can use whatever you prefer. Graphics3D[ Point[data[[All, 1 ;; 3]], VertexColors -> Hue /@ data[[All, 4]]], Axes -> True, BoxRatios -> {1, 1, 1/GoldenRatio}]

plotting - Adding a thick curve to a regionplot

Suppose we have the following simple RegionPlot: f[x_] := 1 - x^2 g[x_] := 1 - 0.5 x^2 RegionPlot[{y < f[x], f[x] < y < g[x], y > g[x]}, {x, 0, 2}, {y, 0, 2}] Now I'm trying to change the curve defined by $y=g[x]$ into a thick black curve, while leaving all other boundaries in the plot unchanged. I've tried adding the region $y=g[x]$ and playing with the plotstyle, which didn't work, and I've tried BoundaryStyle, which changed all the boundaries in the plot. Now I'm kinda out of ideas... Any help would be appreciated! Answer With f[x_] := 1 - x^2 g[x_] := 1 - 0.5 x^2 You can use Epilog to add the thick line: RegionPlot[{y < f[x], f[x] < y < g[x], y > g[x]}, {x, 0, 2}, {y, 0, 2}, PlotPoints -> 50, Epilog -> (Plot[g[x], {x, 0, 2}, PlotStyle -> {Black, Thick}][[1]]), PlotStyle -> {Directive[Yellow, Opacity[0.4]], Directive[Pink, Opacity[0.4]],