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

如何解决Matplotlib散点图标记随纵坐标增大而变大的问题

Stepmania解析器散点图标记大小异常问题解决

你在编写Stepmania解析器生成散点图时,遇到标记随纵坐标上移变大的问题,设置markersize参数也没效果,核心问题和解决方法如下:

问题根源

看你的ScatterTime函数代码:

plt.scatter(ind, fullrange, s=beats, marker = ".",)

这里有两个关键错误:

  1. 散点大小被动态赋值:s是控制散点大小的参数,你传入的beats数组值随beat +=1不断递增,纵坐标越靠上(fullrange数值越大),对应的beats值也越大,直接导致标记大小跟着变大。而markersize是折线图等其他绘图类型的标记参数,对散点图不生效。
  2. 绘图代码放在循环内:每次处理一行数据就调用一次plt.scatter,会重复绘制图层,加重视觉上的大小混乱。

修复代码

修改后的ScatterTime函数:

def ScatterTime():
    fpath = openSmFile()
    if (fpath.endswith('.sm')):
        file = open(fpath, "r")
        lines = file.readlines()
        beats = []
        arrowDirections = []
        beat = 1
       
        for line in lines:
            i = 0
            if not ("," in line or "." in line or "#" in line or ";" in line or "-" in line or line == "" or ":" in line or len(line) != 5):  
                for alpha in line:
                    if i == 0:
                        arrowDirections.append("left")
                    if i == 1:
                        arrowDirections.append("down")
                    if i == 2:
                        arrowDirections.append("up")
                    if i == 3: 
                        arrowDirections.append("right")      
                    i += 1
                    if i != 5:
                        if (alpha != "0"):
                            beats.append(beat)     
                        if (alpha == "0"):
                            beats.append(0)
                        beat += 1
        # 把绘图逻辑移到循环外,只绘制一次
        plt.title(str(os.path.basename(fpath)))
        fullrange = list(range(1, beat))
        u, ind = np.unique(arrowDirections, return_inverse=True)
        plt.xticks(range(len(u)), u)
        # 用固定数值设置散点大小,比如s=10,可根据需求调整
        plt.scatter(ind, fullrange, s=10, marker=".")
    else:
        print("该文件无效。")

说明

  • 把s=beats改成固定数值(比如s=10),所有散点大小就会统一,不会随纵坐标变化。
  • 将绘图代码移出循环,避免重复叠加绘图,保证图表渲染正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:48:22