1
$\begingroup$

When I create a 3d plot (say with ListPointPlot3D[{{0, 0, 0}, {1, 1, 1}}] the axes lines look quite bad. For example the z-direction axes, which due to the perspective are not exactly vertical in the 2D perspective, seem to be approximated in terms of many vertical lines. This looks quite terrible. Is there a way to improve this so that the axes lines really look straight. The issue is not in the method of export. It is already present within the .nb and happens both when exporting to .png and to .pdf.


"12.1.1 for Linux x86 (64-bit) (June 19, 2020)"

Example of low quality axes lines.

$\endgroup$
7
  • 1
    $\begingroup$ Try an orthographic projection ListPointPlot3D[{{0, 0, 0}, {1, 1, 1}}, ViewPoint -> {5, 2, 3}, ViewProjection -> "Orthographic", BoxRatios -> 1] If you don't want that, and just want to smooth the lines, then you need antialiasing on your plot. Enable this in your preferences. $\endgroup$
    – flinty
    Commented Sep 3, 2021 at 14:19
  • $\begingroup$ @flinty, thanks. I turned Preferences/Appearance/Graphics antialiasing slider all the way to Highest quality. This perhaps helped a little bit but the problem is still there. Similarly ` ViewProjection -> "Orthographic"` can maybe mitigate some of the problem by fixing the worst offender of the z-axis but the problem remains for the other axes. $\endgroup$
    – Kvothe
    Commented Sep 3, 2021 at 15:33
  • $\begingroup$ This is relevant stackoverflow.com/a/8617773/4954079 $\endgroup$
    – yarchik
    Commented Sep 3, 2021 at 18:36
  • $\begingroup$ This could be a limitation of your graphics processor, drivers, and screen resolution since you have maxed antialiasing and still have issues. I see issues using a 4k screen. What are you using and which version of Mma? $\endgroup$
    – Edmund
    Commented Sep 3, 2021 at 19:46
  • $\begingroup$ @yarchik, thanks. I tried applying antialias but applying it to a plot A it produces a smaller plot A'. If I resize plot A' to the same size as A it gives something a lot worse than A. Am I instead supposed to make a plot B that is say 3 times as big as A, and then apply antialias[#,3]& to it in order to make a plot of the same size as A. I tried this which might be giving an improvement for the axes but now I have to rescale all individual components since the ticks and label sizes are now much smaller. What is the correct procedure for using this function? $\endgroup$
    – Kvothe
    Commented Sep 6, 2021 at 6:37

2 Answers 2

2
$\begingroup$

The low quality plots where a consequence of using the Mesa rendering engine. I earlier had to switch to this because Opacity was not working correctly with OpenGL see https://mathematica.stackexchange.com/a/222365/45020. This fixed the opacity issue but apparently introduces this antialiasing problem.

I changed the drivers for my Nvidia Graphics card from the open source nouveau ones that come with Ubuntu to the proprietary Nvidia ones. Then I changed back the rendering engine to OpenGL. I then had to once more move the anti-aliasing slider found in Preferences/Appearance/Graphics all the way to Highest quality. It had moved back, I guess when switching the rendering engine (?). Using the Nvidia drivers it seems (for now) that both the Opacity and the anti-aliasing are working well, so this was indeed a GPU driver issue.


Thanks to flinty for pointing out the antialiasing slider and to Edmund for pointing out this was likely a graphics driver issue.

$\endgroup$
0
$\begingroup$

Try this:

ListPointPlot3D[{{0, 0, 0}, {1, 1, 1}}, 
 BoxStyle -> Directive[Black, Thickness[0.005]], TicksStyle -> Black]

I hope it helps.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.