Использование LaTeX в графических 3D осях и метках - PullRequest
1 голос
/ 19 февраля 2020

Не может ли plotly (v4.5.0) обработать необработанные строки в LaTeX для меток трехмерных осей фигур?

Для теста я запускаю приведенный ниже код в блокноте Jupyter. Я специально попробовал несколько различных форматов строк, чтобы поэкспериментировать с тем, как API их обрабатывает. Необработанные строки генерируют LaTeX для title. Но я не вижу везения ни осям, ни меткам тиков, которые являются элементами scene.

import numpy as np
import plotly.graph_objs as go

# define time and space data
x = np.linspace(-10, 10, 400)
t = np.linspace(0, 4*np.pi, 200)
xx, tt = np.meshgrid(x, t)
f1 = 1/np.cosh(xx + 3) * np.exp(1j*2.3*tt)

# visualize
fig = go.Figure(go.Surface(z=np.real(f1), x=xx, y=tt))
fig.update_layout(title=r'$f_1(t)$', 
                  autosize=False, width=500, height=500,
                  margin=dict(l=20, r=20, b=20, t=40),
                  scene=dict(xaxis=dict(title=r'x'),
                             yaxis=dict(title=r'$t$')))
fig.update_layout(scene=dict(xaxis=dict(nticks=3),
                             yaxis=dict(ticktext=["0",r"\pi",r"$2\pi$","3\pi","4\pi"],
                                        tickvals=np.linspace(0,4*np.pi,5))))
fig.show()

1 Ответ

0 голосов
/ 16 апреля 2020

Из приведенного выше описания неясно, чего вы пытаетесь достичь, но я правильно понял, что вы пытаетесь изменить метку оси на графике поверхности. Вот как вы можете легко это сделать.

import numpy as np
import plotly.graph_objs as go

# define time and space data
x = np.linspace(-10, 10, 400)
t = np.linspace(0, 4*np.pi, 200)
xx, tt = np.meshgrid(x, t)
f1 = 1/np.cosh(xx + 3) * np.exp(1j*2.3*tt)

# visualize
fig = go.Figure(go.Surface(z=np.real(f1), x=xx, y=tt))
fig.update_layout(title='Plot Title',autosize=True,
                  width=900, height=900, 
                  margin=dict(l=65, r=50, b=65, t=90))
fig.update_layout(scene = dict(
                    xaxis_title='X-axis Title',
                    yaxis_title='X-axis Title',
                    zaxis_title='X-axis Title'))                    
fig.show()

Вы также можете добавить Контуры на график поверхности:

import numpy as np
import plotly.graph_objs as go

# define time and space data
x = np.linspace(-10, 10, 400)
t = np.linspace(0, 4*np.pi, 200)
xx, tt = np.meshgrid(x, t)
f1 = 1/np.cosh(xx + 3) * np.exp(1j*2.3*tt)

# visualize
fig = go.Figure(go.Surface(z=np.real(f1), x=xx, y=tt))
fig.update_traces(contours_z=dict(show=True, usecolormap=True,
                                  highlightcolor="limegreen", project_z=True))
fig.update_layout(title='Plot Title',autosize=True,
                  width=900, height=900, 
                  margin=dict(l=65, r=50, b=65, t=90))
fig.update_layout(scene = dict(
                    xaxis_title='X-axis Title',
                    yaxis_title='Y-axis Title',
                    zaxis_title='Z-axis Title'))                    
fig.show()

Вот выходное изображение: 1. Оси-метка добавлен участок axis-label added 2. участок участка добавлен к участку поверхности contour plot added to surface plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...