首页 > 解决方案 > 冲浪图上的自定义 ztick 标签,使用 PyPlot

问题描述

在 z 轴上寻找自定义 zticklabels 和 fontsize。最值得注意的是使用 zticks([-(R+r),0,R+r],["-Rr","0","R+r"],fontsize=16) 的直观方法不起作用。我正在使用 Julia 4.3.0,因为这是一个较旧的项目,目前我无法完全转换为较新的版本。下面的注释行包括我尝试过的其他不成功的命令。

我的最终目标是让 z 轴上的 -0.8、0、0.8 值分别改为“-r”、“0”和“r”。

using PyPlot

colormapp = "nipy_spectral"

R = 1.6;
r = 0.8;
N = 256;

dx = 2*pi/(N-1);
y = zeros(N,1); # y = phi (col) toroidal
x = y.'; # x = theta (row) poloidal
for ix = 2:N; y[ix] = (ix-1)*dx; x[ix] = (ix-1)*dx; end

cosxsqr = cos(x) .+ 0.0*y;
sinxsqr = sin(x) .+ 0.0*y;
sinysqr = 0.0*x .+ sin(y);
cosysqr = 0.0*x .+ cos(y);
Rrcosxsqr = R+r*cosxsqr;
rRrcosx = r*Rrcosxsqr[:];
Xsqr = Rrcosxsqr.*cosysqr;
Ysqr = Rrcosxsqr.*sinysqr;
Zsqr = r*sinxsqr;

figure(98)
clf()
pmeshtor = pcolormesh(x,y,Zsqr+r,cmap=colormapp);
cb = colorbar();

colorvals = Zsqr+r;
colorvals = colorvals/maximum(colorvals[:])

ax = figure(99)
clf()
srf = surf(Xsqr,Ysqr,Zsqr,cstride=10,rstride=10,facecolors=get_cmap(colormapp).o((colorvals)))
cb = colorbar(pmeshtor,ticks=[0,0.8,1.6])
cb[:ax][:set_yticklabels](["-r","0","r"], fontsize=16)
xlabel("x",fontsize=16)
ylabel("y",fontsize=16)
zlabel("z",fontsize=16)
xlim([-(R+r)-0.3,R+r+0.3])
ylim([-(R+r)-0.3,R+r+0.3])
zlim([-(R+r)-0.3,R+r+0.3])
xticks([-(R+r),0,R+r],["-R-r","0","R+r"],fontsize=16)
yticks([-(R+r),0,R+r],["-R-r","0","R+r"],fontsize=16)
zticks([-r,0,r])

#zticklabels([-r,0,r],["-r","0","r"])  
#setp(ax[:get_zticklabels](),fontsize=16);
#setp(ax[:set_zticklabels](["-r","0","r"]))#,fontsize=16);

这是生成的图像。 在此处输入图像描述

标签: julia

解决方案


注释的命令

setp(ax[:set_zticklabels](["-r","0","r"]),fontsize=16);

确实有效,但前提是插入缺少的投影选项,如下图 99

figure(99)
ax = subplot(111, projection="3d")

推荐阅读