export of scatter3 is rough

Figures of plot and scatter3 look very different. I get very fine figures in a programm using plot, getting the best version via 'save as eps' and then outside matlab 'export eps to tiff 600 dpi'. Another version of the programm uses scatter3 and the same export method shows very pixelised pictures, no real eps! Results of both programms have to have the same scale and 'hold on' in both works. The dots made by scatter3 alos look very bad. I attach a picture of the quality difference (scatter3 left, plot right). Files for some reason are 4658x3500 pixels. How to get better quality out of scatter3? I cannot find the proper controls.

Answers (2)

Cam Salzberger
Cam Salzberger on 23 Oct 2017
Edited: Cam Salzberger on 23 Oct 2017
Hello Weia,
There is a limit on the size and complexity of an image that MATLAB can export to a true vector graphics format. If the figure is too complex, the image will be export as an EPS containing raster data.
What happens if you try to export directly to a TIFF file, using:
print filename.tif -dtiff -r600
Testing first on a figure you've exported successfully with the original workflow, do the TIFF files turn out with a similar appearance?
-Cam

10 Comments

Ah, that will be the explanation, complex it is. I'll do some more testing. You'll hear whether it succeeds or not (yet).
I do not understand the syntax. Where is it going? I now have a line scatter3(........) And then??
I'm not sure I understand what you're asking? You are wondering where the "print" line of code goes?
Once you have fully created your figure with all plots and everything formatted, then you call print on it. This allows you more control than using File -> Save As, since "Save As" sets some default options (like using screen resolution - 96 or 72 dpi - for raster data).
See print syntax here for an explanation of the different arguments.
-Cam
I still do not understand. 'Print' sounds like printing on a printer, but I only want to have a good tiff-file on my desktop. 'Save as' I did after completely running the programm, the same with print? Or is 'print' a line inside the programm?
By the way, 'save as' on a graph made by scatter3 is unpredictable. Here three times the same graph: as it appears on screen, the first time I did 'save as eps' and the second time (after restarting the programm, nothing altered). What happens is that the second eps has the same dots but on a page two times wider. Strange.
'Print' sounds like printing on a printer
Maybe it sounds so, but instead of guessing you could either trust Cam or read the documentation:
doc print
You will see, that print can create files. No, "Save As" is not exactly the same as print.
The terms "screen" "small " "double" do not clarify, what you are doing. "Save as" is predictable, but it matters, what you did with the figure before.
1 I trust Cam but do not understand what to do. I almost never understand the documentation, except when it is mathematics. I tried several versions of code but nothing happens, I nowhere can find any tiff-file. I have this code: < blank line scatter3(vervormingx,vervormingy,verticaal*vervormingz, 30, cm(ceil(zscaled),:), 'fill') blank line > So simply one line with scatter3 and that's it. Which code to add to have that same graph as a tiff somewhere on my computer?
2 Export to eps from a scatter3 is unpredictable. When making a tiff from the eps-file sometimes the tiff measures 4658 × 3500 pixels, sometimes 8150 × 6566 pixels, sometimes 9333 × 7608 pixels. Just quit matlab, reopen it en rerun the programm without doing whatsoever. I call that unpredictable eps-exports.
The print command is something you can run in the Command Window. I assume that you either ran the scatter3 command in the Command Window, or you created a script (a ".m" file) and ran that. You can do the same with the print command, either running it in the Command Window after you run the scatter3 command, or putting it in the script after the scatter3 command.
When you call the print command, it will create a file, filename.tif, in the Current Directory. If you don't know what the current directory is, you can check the Current Directory Browser (usually to the left side of the MATLAB window) or enter pwd in the Command Window.
That said, I highly recommend trying out the MATLAB Onramp course here. It's a short, free, online course that will give you the basics of MATLAB's interface, scripts, and functions, among other things.
I am not sure what program or method you are using to convert the EPS file to a TIFF file, so I couldn't tell you whether the reason for the difference lies with MATLAB's creation of the EPS file, or the other program's translation to TIFF. That is one reason I was recommending doing the creation directly to TIFF file from MATLAB, since that is likely to be more controlled, consistent, or at least reproducible.
Ah the command window, I'll try that, thanks.

Sign in to comment.

Weia Reinboud
Weia Reinboud on 27 Nov 2017
Using 'print' in the command window leads to disappearance of all my complaints. So: thanks!
Strange that 'save as' in the picture window leads to so different files. Also strange: the picture window shows the picture made with scatter3 in a small version. It is possible to pull on the window to enlarge it. The picture becomes bigger but the points made by scatter3 remain the same, so they come farther away from each other. I thought the enlarged picture gave the better view, but it is the small one.

1 Comment

The marker sizes are based on pixel size, not figure window size. So when you make the figure window larger, it won't enlarge the sizes of the markers unless you specifically setup a callback to do this. This behavior is desirable when you produce a very crowded plot, and you want to make the window larger to space out the points and see what is going on better.
If you need markers that take up an exact amount of size in "data" units, you can simply draw them onto the plot with fill. You'll need to calculate the vertices around the border of the marker yourself though.

Sign in to comment.

Asked:

on 23 Oct 2017

Commented:

on 27 Nov 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!