在 Excel 中使用坐标绘制矩形

在 Excel 中使用坐标绘制矩形

我想使用 Excel 图表绘制一个矩形,仅需 2 个坐标,左下角和右上角。有没有办法定义使用 Microsoft Office 365 Pro plus Excel 版本。

在此处输入图片描述


例如:

Element_name   X_low    Y_low   X_high  Y_high
CM124_BK124    4       4        16      64
CM124_BK8      4       4        16      64

这是我使用 Excel 图表选项的尝试treemap;但没有太大帮助。 在此处输入图片描述

答案1

我认为您无法在原生 Excel 中做到这一点,但如果您愿意使用插件,这是可能的。Funfun 插件允许您在 Excel 中使用 Javascript 创建这种图表。

这是我为您编写的工作代码:

https://www.funfun.io/1/#/edit/5a69ddc9ee0b8c3283c653e0

我使用了您想要的格式,我只是改变了数据来创建两个不同的矩形,两个矩形都只有两个坐标。

正如您在此链接中看到的,我使用了 Funfun 的在线编辑器,并在嵌入的电子表格中输入了您的表格。

我使用 JSON 文件将电子表格中的数据传送到我的 javascript 代码中,如下所示:

{
    "data": "=A1:E3"
}

然后,我将数据存储在局部变量中,并使用正确的坐标创建矩形,如下所示:

/* we store the data from the spreadsheet in local variables */
var label = [];
var x = [];
var y = [];

for (var i = 1; i < $internal.data.length; i++)
{
  label.push($internal.data[i][0]);
  x.push([parseInt($internal.data[i][1]), parseInt($internal.data[i][3])]);
  y.push([parseInt($internal.data[i][2]), parseInt($internal.data[i][4])]);  
}

/* create all the shapes you want with the data stored */
var shapes = [];
var traces = [];
for (var i = 0; i < $internal.data.length - 1; i++) {
  shapes.push({
    type: 'rectangle',
      xref: 'x',
      yref: 'y',
      fillcolor: 'rgba(50, 171, 96, 0.7)',
      x0: x[i][0],
      y0: y[i][0],
      x1: x[i][1],
      y1: y[i][1],
      line: {
        color: 'rgba(50, 171, 96, 1)'
      }
  });
  traces.push({
    x: [x[i][0] + 3.5],
    y: [y[i][0] - 2],
    text: label[i],
    mode: 'text'
  });
}

数组shapes用于存储矩形,而 则trace用于标记每个矩形。

您可以根据需要自定义图表,有很多选项可用,这就是 javascript 及其强大库的魅力所在。在这个例子中,我使用了plotly.js

您可以通过将 URL 粘贴到 Excel 中来加载它Funfun Excel 插件。以下是我的例子:

最终的

编辑

如果您想在形状内写入文本,您只需要另一个局部变量及其存储的值,并找到正确的坐标:

var textInRectangles = ["First", "second"];

...

 traces.push({
    x: [x[i][0] + 2.5],
    y: [y[i][0] + 4],
    text: textInRectangles[i],
    textfont: {
    color: 'black',
    size: 9,
    family: 'Arial'
  },
    mode: 'text'
  });

编辑

我修改了前面示例的链接。

披露:我是 Funfun 的开发人员。

答案2

您可以使用散点图来完成此操作,但需要输入所有角的坐标:

在此处输入图片描述

相关内容