Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Plotly:如何使用go.contour更改等高线的比例?_Python_Plotly - Fatal编程技术网

Python Plotly:如何使用go.contour更改等高线的比例?

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

我正在尝试使用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:
    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()