пользовательские метки ztick на графике surf, используя PyPlot

#julia

#julia

Вопрос:

Также ищу пользовательские метки ztick и размер шрифта на оси z. Наиболее примечательно, что интуитивный подход с использованием zticks([-(R r),0, R r], [«-R-r»,»0″, «R r»], fontsize = 16) не работает. Я использую Julia 4.3.0, потому что это более старый проект, который я не могу полностью преобразовать в более новую версию в настоящее время. В приведенных ниже комментариях приведены дополнительные команды, которые я пробовал, но безуспешно.

Моя конечная цель здесь — получить значения -0.8, 0, 0.8 на оси z, чтобы вместо них было указано «-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);
  

Вот результирующее изображение.
введите описание изображения здесь

Комментарии:

1. можете ли вы предоставить ссылку для этого x = y.'; # x = theta (row) poloidal синтаксиса() ?

2. прошлый хэштег — это комментарий

3. и это x=y.' правильно, я имею в виду, что такое y dot ' ? Я хотел ссылку для этого синтаксиса.

4. я не нашел документ julia, но это синтаксис, подобный matlab, где .’ превращает строку в столбец или наоборот. mathworks.com/matlabcentral/answers /…

Ответ №1:

Прокомментированная команда

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

работает, но только если вставить отсутствующую опцию проекции, как показано на рис. 99

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