Plotting HSP in Matlab

I am trying to recreate a Hansen solubility sphere using Matlab. I can plot the solute sphere using:
[x,y,z] = sphere;
radius = 7.1;
x = x * radius;
y = y * radius;
z = z * radius;
x_offset = 17.0;
y_offset = 9.8;
z_offset = 9.4;
surf(x+x_offset,y+y_offset,z+z_offset)
surf(x,y,z,'FaceAlpha',0.3)
shading("interp")
colormap("summer")
xlabel('\delta_{d}', 'FontSize', 20);
ylabel('\delta_{p}', 'FontSize', 20);
zlabel('\delta_{h}', 'FontSize', 20);
axis equal;
However, I now need to be able to superimpose a 3D scatter plot on the same plot as the sphere. Any suggestions?

Answers (1)

Use the hold function —
[x,y,z] = sphere;
radius = 7.1;
x = x * radius;
y = y * radius;
z = z * radius;
x_offset = 17.0;
y_offset = 9.8;
z_offset = 9.4;
figure
surf(x+x_offset,y+y_offset,z+z_offset)
hold on
surf(x,y,z,'FaceAlpha',0.3)
hold off
shading("interp")
colormap("summer")
xlabel('\delta_{d}', 'FontSize', 20);
ylabel('\delta_{p}', 'FontSize', 20);
zlabel('\delta_{h}', 'FontSize', 20);
axis equal;
.

4 Comments

Thanks - I'd tried that before but assumed I was wrong because of the appearance of two spheres - almost like the lower one is a shadow. Any idea how I can remove that so that only a single 3D sphere shows (plus the scatter plot when that's introduced).
My pleasure!
I’m lost. I thought you wanted to plot both of them. If you don’t want the second sphere, don’t plot it, or change its offsets to plot it in a different location. If you want to change the axes limits, use xlim and its friends or axis to set all the limits at once.
For the scatter plot, use hold and the scatter3 function.
Thanks - et voilla. Some tinkering to do with marker colour/shape, but it's not a bad approximation of what we get with bespoke sofware.
My pleasure!
If my Answer helped you solve your problem, please Accept it!
.

Sign in to comment.

Products

Asked:

on 22 Sep 2023

Commented:

on 26 Sep 2023

Community Treasure Hunt

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

Start Hunting!