如何使用chart.js从具有(X,Y)值的线集绘制多条线?

vawmfj5a  于 2023-03-02  发布在  Chart.js
关注(0)|答案(2)|浏览(153)

我不打算像Chart.js文档那样按月份绘制多行图表。我有一些数据,如:
第1行={(X = 1.1,Y = 100),(X = 2.1,Y = 200),...}
第2行={(X = 1.2,Y = 110),(X = 2.2,Y = 210),...}
......
我希望所有线路都绘制在同一画布上,如下图所示。

不同的线可能有不同的X坐标。
Chart.js似乎不支持这种类型的线图(点必须在标签列表中列出的固定X上精确对齐)。Chart.js可能喜欢:
X = {X = 1.1,X = 2.1,...}
第一行= {第一行,第二行,第三行...}
第2行= {y "1,y" 2,y "3 ...}
所有的线共享同一个X。这不是我想要的。
我需要每一行都有自己的X列表,line1(X1列表,Y1列表),line2(X2列表,Y2列表)..... lineN(XN列表,YN列表)
不过QT可以像我期望的那样很好地处理这一点。
如果Chart.js不是最适合做这项工作的,请告诉我哪个好。我不喜欢用raw js在画布上画线。Plotly是一个好的选择吗?

dnph8jn4

dnph8jn41#

你完全可以通过chart.js在图表上做multiple line Chart.js对它的数据结构格式非常严格(而且我只听说过它和javascript一起使用)

export const data = {
  labels,
  datasets: [
    {
      type: "line" as const,
      label: "Dataset 1",
      backgroundColor: "rgba(75, 192, 192, 1)",
      borderColor: "rgba(255, 99, 132,1)",
      borderWidth: 2,
      fill: false,
      data: labels.map(() => faker.datatype.number({ min: -1000, max: 1000 }))
    },
    {
      type: "line" as const,
      label: "Dataset 2",
      backgroundColor: "rgba(75, 2, 192, 1)",
      borderColor: "rgba(155, 99, 132,1)",
      borderWidth: 2,
      fill: false,
      data: labels.map(() => faker.datatype.number({ min: -1000, max: 1000 }))
    },
    {
      type: "bar" as const,
      label: "Dataset 3",
      backgroundColor: "rgba(53, 162, 235, 0.1)",
      data: labels.map(() => faker.datatype.number({ min: -1000, max: 1000 }))
    }
  ]
};

上面你有三个数据集,所以你有两条线和一些条。然后这个数据变量被传递到一个图表。
在响应端,下面是一个代码sanbox:https://codesandbox.io/s/chartjs-multiple-dataset-r1kixh?file=/App.tsx:1747-2138

xkrw2x1b

xkrw2x1b2#

我刚刚试过Plotly.js可以做到这一点。

<div id="myPlot" style="width:100%;max-width:700px"></div>

<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>

<script type="text/javascript">
    var xValues = [50,60,70,80,90,100,110,120,130,140,150];
    var x2Values = [30,40,50,60,70,80,90,100,110,120,130];
    var yValues = [7,8,8,9,9,9,10,11,14,14,15];
    var y2Values = [9,9,8,9,9,19,20,11,34,4,05];
    
    var data = [
      {x: xValues, y: yValues, mode:"lines"},
      {x: x2Values, y: y2Values, mode:"lines"}
    ];
    var layout = {title: "Plotly Chart"};

    Plotly.newPlot("myPlot", data, layout);
    
</script>

如下图所示,行不必使用相同的X列表。

我期待更多的答案来回答我的问题。

相关问题