首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用chart.js绘制散点图

如何用chart.js绘制散点图
EN

Stack Overflow用户
提问于 2022-01-08 13:01:01
回答 3查看 671关注 0票数 1

我试图找出如何用chart.js绘制散点图,我试图绘制的数据是随机生成的,其中datesdatetime.now()对象的列表,prices是浮点数的列表。

代码语言:javascript
运行
复制
dates = [datetime.now().strftime("%Y-%m-%d")  for i in range(10)]
代码语言:javascript
运行
复制
var dates_ = {{dates|tojson}}
var prices_ = {{prices|tojson}}
function parse_data(dates , prices)
{
    console.log(dates.length , prices.length)
    var tmp = [];
    for (let i = 0; i < dates.length; i++)
    {
        var x;
        var y;
        tmp[i] = {x: dates.at(i), y: prices.at(i)};
    }
    return tmp;
}
var data_ = parse_data(dates_, prices_);

var chart = new Chart(ctx, {
    type: 'scatter',
    data: {
        datasets: [{
        lablel: "some_data",
        data: data_}]
});

将日期转换为浮动数字是一项工作,但它将日期显示为数字,而且看起来并不好看。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-01-08 16:41:50

散点图在内部使用线状图,但对其进行更改,使showLine属性变为假,并将两个轴设置为线性。

因此,您只需在dataset中将showLine属性设置为false,并使用线图。

票数 1
EN

Stack Overflow用户

发布于 2022-01-08 15:36:38

您可以按以下方式定义x轴

代码语言:javascript
运行
复制
x: {      
  type: 'time',
  time: {
    parser: 'YYYY-M-D',
    unit: 'day',
    displayFormats: {
      day: 'D MMM YYYY'
    },
    tooltipFormat: 'D MMM YYYY'
  }
}

更多信息可以在Chart.js文档这里和Chart.js samples 这里中找到。请注意,我使用图表-适配器-瞬间力矩来完成这项工作。解析和显示所需时间值的格式可以找到这里

请看一看你的修正代码,看看它是如何工作的。

代码语言:javascript
运行
复制
var test = [
  { x: "2022-1-8", y: 950 },
  { x: "2022-1-9", y: 1100 },
  { x: "2022-1-10", y: 990 },
  { x: "2022-1-12", y: 1250 },
  { x: "2022-1-13", y: 1050 }
];

var chart = new Chart('chart-line', {
  type: 'scatter',
  data: {
    datasets: [{
      data: test,
      label: 'buys',
      borderColor: "#3e95cd"
    }]
  },
  options: {
    responsive: false,
    scales: {
      x: {      
        type: 'time',
        time: {
          parser: 'YYYY-M-D',
          unit: 'day',
          displayFormats: {
            day: 'D MMM YYYY'
          },
          tooltipFormat: 'D MMM YYYY'
        }
      }
    }
  }
});
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.0/chart.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-moment@1.0.0"></script>
<canvas id="chart-line" height="200"></canvas>

票数 2
EN

Stack Overflow用户

发布于 2022-11-16 10:37:08

代码语言:javascript
运行
复制
const data = {
  labels: ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"],
  datasets: [{
    label: 'Dataset 1',
    data: [{x:1, y:12}, {x:2, y:3}, {x:3, y:2}, {x:4, y:1}, {x:5, y:8}, {x:6, y:8}, {x:7, y:2}, {x:8, y:2}, {x:9, y:3}, {x:10, y:5}, {x:11, y:7}, {x:12, y:1}]
  }]
}

const config = {
  type: 'scatter',
  data,
  options: {
    responsive: true,
    maintainAspectRatio: false,
  },
}

const $canvas = document.getElementById('chart')
const chart = new Chart($canvas, config)
代码语言:javascript
运行
复制
<div class="wrapper" style="width: 98vw; height:180px">
  <canvas id="chart"></canvas>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70632540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档