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

Matplotlib绘图坐标轴出现额外[0,1.0]刻度的原因及解决咨询

问题原因及解决方法

核心原因

你的代码存在两个关键问题,导致出现叠加的[0,1.0]刻度:

  1. 重复创建子图:你先用plt.subplots()创建了包含子图的figure,随后又通过figure.add_subplot()再次添加子图,这会导致两个子图重叠显示——其中plt.subplots()生成的空轴默认刻度范围就是[0,1.0],和你后续绘制的轴叠加后就出现了双刻度。
  2. 语法错误:调用create_plot时存在多余的右括号,导致代码逻辑异常。

解决方法

修正代码逻辑,避免重复创建子图

直接使用plt.subplots()返回的Axes对象来绘图,不需要再调用add_subplot:

import pandas as pd
import matplotlib.pyplot as plt

def create_plot(data: pd.DataFrame, ax):
    ax.plot(data.col1, data.col2, color="#39915d", marker="o")
    return ax

files = ("file1",)
# 获取subplots返回的figure和axes数组
figure, axes = plt.subplots(ncols=len(files), nrows=1)
# 处理单文件的情况,确保axes是可迭代对象
if len(files) == 1:
    axes = [axes]

for i, file in enumerate(files):
    get_file(file)
    data = get_data(file)
    create_plot(data, axes[i])

plt.show()

如果你坚持使用add_subplot的方式

需要删除plt.subplots()中创建子图的逻辑,直接从空figure开始添加:

import pandas as pd
import matplotlib.pyplot as plt

def create_plot(data: pd.DataFrame, figure, plotIndex):
    ax = figure.add_subplot(*plotIndex)
    ax.plot(data.col1, data.col2, color="#39915d", marker="o")
    return figure

files = ("file1",)
# 创建空figure,不生成子图
figure = plt.figure()

for i, file in enumerate(files):
    get_file(file)
    data = get_data(file)
    # 修正语法错误,移除多余的右括号
    create_plot(data, figure, (1, len(files), i+1))

plt.show()

额外排查点(针对WSL+VcXsrv环境)

如果修正代码后仍有问题,可检查:

  • 确保VcXsrv启动时勾选了Disable access control选项,避免显示异常
  • 确认环境变量DISPLAY设置正确(通常为:0),可通过echo $DISPLAY验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:10:49