VS Code中Plotly图表Y轴刻度与Jupyter不一致问题求助
问题描述
32位Jupyter Notebook无法读取大体积CSV文件,转用VS Code操作后,运行相同的Plotly代码生成图表,发现Y轴刻度与Jupyter Notebook中生成的不一致,需要让VS Code生成的图表和Jupyter保持一致。
使用的代码如下:
import pandas as pd import plotly import plotly.io as pio import plotly.tools as plotly_tools import plotly.express as px import plotly.graph_objects as go from plotly.subplots import make_subplots usedcolumns=['Time[s]','HIL_Input_Sources::DP_Vol.CurrentValue','HIL_Input_Sources::GE_Vol.CurrentValue','HIL_Input_Sources::CAM_RPM.RPM','HIL_Input_Sources::DP_Vol.RMS','HIL_Input_Sources::DP_Freq.Hz','HIL_Input_Sources::DP_Curr.CurrentValue','HCP4_CANFD02::Diagnose_01_XIX_HCP4_CANFD02::DW_Kilometerstand_XIX_Diagnose_01_XIX_HCP4_CANFD02[Unit_KiloMeter]'] chunksize = 1000 df = pd.read_csv('C:\\Thesis\\Log_Files\\Input\\Test_Log.csv',skipinitialspace=True, chunksize=chunksize, usecols=usedcolumns,sep=';',low_memory=True) full_data=pd.concat(df,ignore_index=True) full_data pio.renderers.default = "vscode" df1=full_data[['Time[s]','HIL_Input_Sources::DP_Vol.RMS']].copy() print(df1) fig=go.Figure() fig.add_trace(go.Scatter(x = df1['Time[s]'], y = df1['HIL_Input_Sources::DP_Vol.RMS'],mode="lines")) fig.update_layout(title='DP_Vol.RM',plot_bgcolor='rgb(230, 230,230)',showlegend=True) fig.update_layout(xaxis = dict(tickmode = 'linear',dtick = 1,showgrid=True, gridwidth=1,griddash="dot", gridcolor='Black')) fig.update_layout(yaxis = dict(tickmode = 'linear',tick0 = 0,dtick = 5,showgrid=True, gridwidth=1,griddash="dot", gridcolor='Black')) fig.show()
解决办法
1. 强制固定Y轴范围
不同渲染器(Jupyter的渲染器与VS Code的vscode渲染器)可能会自动调整刻度适配窗口,强制指定Y轴范围可以避免这种差异:
# 修改Y轴配置,添加range参数 fig.update_layout(yaxis = dict( tickmode = 'linear', tick0 = 0, dtick = 5, showgrid=True, gridwidth=1, griddash="dot", gridcolor='Black', range=[0, max(df1['HIL_Input_Sources::DP_Vol.RMS']) + 5] # 基于数据最大值设置范围,留5单位余量 ))
2. 统一数据类型
32位与64位环境下pandas读取数据的数值类型可能存在差异,检查并转换数据类型:
# 检查数据类型 print(df1['HIL_Input_Sources::DP_Vol.RMS'].dtype) # 强制转换为64位浮点 df1['HIL_Input_Sources::DP_Vol.RMS'] = df1['HIL_Input_Sources::DP_Vol.RMS'].astype('float64')
3. 对齐Plotly版本
不同环境的Plotly版本差异可能导致渲染逻辑不同,先检查两边版本:
import plotly print(plotly.__version__)
将VS Code环境的Plotly版本升级到与Jupyter一致:
pip install plotly==<Jupyter环境的版本号>
4. 关闭自动缩放
明确关闭Y轴的自动缩放功能,确保刻度严格按照配置生成:
fig.update_layout(yaxis = dict( tickmode = 'linear', tick0 = 0, dtick = 5, showgrid=True, gridwidth=1, griddash="dot", gridcolor='Black', autorange=False # 禁用自动缩放 ))
内容的提问来源于stack exchange,提问作者Pavan
相关产品推荐
相关产品推荐

