Python Plotly:如何使用go.contour更改等高线的比例?
我正在尝试使用plotly中的等高线绘制3d沟壑函数。 这是我的密码:Python Plotly:如何使用go.contour更改等高线的比例?,python,plotly,Python,Plotly,我正在尝试使用plotly中的等高线绘制3d沟壑函数。 这是我的密码: def draw_plots(f, x, y, history=None, n_lines=100, line_width=50, n_points_along_axis=500): X = np.linspace(x[0], x[1], n_points_along_axis) Y = np.linspace(y[0], y[1], n_points_along_axis) if history is None
def draw_plots(f, x, y, history=None, n_lines=100, line_width=50, n_points_along_axis=500):
X = np.linspace(x[0], x[1], n_points_along_axis)
Y = np.linspace(y[0], y[1], n_points_along_axis)
if history is None:
trace = go.Scatter(
x=[],
y=[],
mode='lines',
marker = dict(
color="rgba(255, 255, 255, .6)"
)
)
else:
history = np.array(history)
trace = go.Scatter(
x=history[:, 0],
y=history[:, 1],
marker = dict(
color="rgba(255, 255, 255, .6)"
)
)
contour = go.Contour(x=X, y=Y, z=[[f([x, y]) for x in X] for y in Y], contours=dict(start=0, end=line_width*n_lines, size=line_width))
fig = go.Figure(data=[trace, contour])
fig.show()
这是一个
(这里的白线是我的优化算法的可视化)
所以,问题是我没有找到改变线条比例的方法。它固定为某个数字,但由于函数非常陡峭,因此如果使用logscale(例如)绘制,它将提供更多信息。您可以使用以下方法设置
go.Figure()对象y轴的比例:
fig.update_yaxes(type="log")
下面是标准的go.Contour()
绘图,来自:
这是相同的设置,y轴的比例设置为log
:
至少它们的外观不同,但我不确定它是否适合您的用例。请注意,您可以使用fig.update_xaxes(type=“log”)
对x轴执行相同的操作,以获得:
完整代码:
我的建议对你效果如何?
import plotly.graph_objects as go
fig = go.Figure(data =
go.Contour(
z=[[10, 10.625, 12.5, 15.625, 20],
[5.625, 6.25, 8.125, 11.25, 15.625],
[2.5, 3.125, 5., 8.125, 12.5],
[0.625, 1.25, 3.125, 6.25, 10.625],
[0, 0.625, 2.5, 5.625, 10]]
))
fig.update_yaxes(type="log")
fig.show()