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

垂直图表转水平图表的数据点像素坐标转换问题咨询

方案1:直接修改函数适配水平图表(推荐)

你原有代码是将分类放在x轴、数值放在y轴绘制垂直折线图,改成水平布局只需交换分类轴和数值轴的绘制参数即可,无需额外做坐标换算,准确率更高,修改后的代码如下:

import numpy as np
import matplotlib.pyplot as plt 

def horizontalPixelCoords(x_labels, y_values):
    coordList = []
    # 原分类对应的x轴位置,水平布局下对应y轴坐标
    y_vals = list(range(1, len(x_labels)+1))
    fig, ax = plt.subplots()
    # 交换x、y参数绘制水平折线
    points, = ax.plot(y_values, y_vals)
    x, y = points.get_data()
    xy_pixels = ax.transData.transform(np.vstack([x,y]).T)
    xpix, ypix = xy_pixels.T
    for xp, yp in zip(xpix, ypix):
        coordList.append((round(xp, 2), round(yp, 2)))
    plt.clf()
    plt.close()
    return coordList

# 测试调用
x_labels = ['x1','x2','x3']
y_values = [30,40,50]
coordValues = horizontalPixelCoords(x_labels, y_values)

方案2:垂直坐标转水平坐标换算逻辑

如果你需要基于原有垂直图表输出的坐标做换算,前提是两种布局的画布尺寸、边距、轴范围完全一致,可以用以下逻辑转换:

  1. 先获取画布的像素总宽度w,计算方式为fig.get_figwidth() * fig.dpi
  2. 转换公式:xH = yV,yH = w - xV
    该方案仅适用于画布参数完全匹配的场景,若存在轴标签、标题等元素占用边距的情况会出现换算误差,优先推荐使用方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:54:04