You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotly Surface图X轴刻度间距未按数值比例显示问题排查与解决

问题与解决方案

给定数据:hemi.csv

244,1000,1500,2000,2500,3000,3500,5000
0,14,18,-42,-72,-84,-86,-94,-119
12.5,277,231,185,139,144,150,161,158
25.1,416,394,370,348,361,374,404,396
37.6,483,587,633,653,566,585,633,621
49.8,504,612,733,756,668,691,748,734
62.4,504,612,733,756,786,749,809,794
74.9,504,612,733,756,786,814,854,838
100,504,612,733,756,786,814,880,864

Plotly 3D曲面图代码及问题

使用以下代码绘制3D曲面图:

import pandas as pd
import plotly.graph_objects as go

# 读取数据为DataFrame
df = pd.read_csv('hemi.csv', header=0, index_col=0)
# 提取曲面图所需数据
x_data = df.columns.tolist()
y_data = df.index.tolist()
z_data = df.values

# 创建曲面图
fig = go.Figure(data=[go.Surface(z=z_data, x=x_data, y=y_data)])

# 更新布局,设置轴标题和刻度标签
fig.update_layout(
    scene = dict(
        xaxis = dict(title = 'RPM', 
                     tickmode = 'array', 
                     tickvals = x_data, 
                     ticktext = df.columns),
        yaxis = dict(title = 'TPS', 
                     tickmode = 'array', 
                     tickvals = y_data, 
                     ticktext = df.index),
        zaxis = dict(title = '扭矩(Nm)')
    )
)

fig.show()

运行后问题:Y轴(TPS)刻度间距符合索引值比例,但X轴(RPM)刻度间距均匀,未按列数值比例显示——例如3500-5000与3000-3500的渲染间距完全相同。

Matplotlib对比实现

使用Matplotlib的plot_trisurf绘制时,刻度均匀且绘图位置会按数值比例缩放:

import matplotlib.pyplot as plt
from matplotlib import cm
import pandas as pd
# 读取数据(csv文件托管在网络上)
data = pd.read_csv('413.csv', header=0, index_col=0)
 
# 转换为长格式
df=data.unstack().reset_index()
df.columns=["X","Y","Z"]

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot_trisurf(df['Y'], 
                df['X'], 
                df['Z'], 
                cmap=cm.jet, 
                linewidth=0.2)
plt.show()

解决方法

pandas默认会将表头值转为字符串类型,导致X轴刻度无法按数值比例渲染。解决方式是读取数据后显式转换表头类型:

df = pd.read_csv('413.csv', header=0, index_col=0).rename(columns=int)

修改后X轴的tickvals会按预期显示,最终效果符合要求。

内容的提问来源于stack exchange,提问作者R Schumacher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:00:02