Центр Plotly трассировки - PullRequest
2 голосов
/ 30 апреля 2019

Мне нужно отцентрировать трассу, потому что при загрузке трасса не появляется и пользователь должен переместить вид.Я не мог найти какую-либо документацию или вопрос, касающийся этой проблемы.Данные извлекаются с сервера через сервис, и я использую Angular 7 для внешнего интерфейса и для построения графика.

Когда страница загружается, график выглядит следующим образом: Ошибка изображения .Если я переместлю вид, он будет выглядеть следующим образом: Изображение okey .

Спасибо

Пример кода:

private loadPlot(): void {
    const minValues = [];
    const maxValues = [];

    const dataForPlot = [];
    let traceIndex = 0;
    for (const key in this.serverData.data) {
      if (key === 'filename') {
        continue;
      }
      const values = [];

      const colorsForLine = [];
      const markersForLine = [];

      const mean = calculateMean(this.serverData.data[key]);

      const textArray = [];

      this.serverData.data[key].forEach(
        (element, index) => {
          let marker = 'circle';
          const color = getPointColor(element['nc']);
          const elementText = element['value'];
          const value = element['value'];
          if (index === this.serverData.data[key].length - 1) {
            marker = 'diamond-cross';
          }
          values.push(value);
          colorsForLine[index] = color;
          markersForLine[index] = marker;
          textArray[index] = elementText + '<br>' + truncateFilename(this.serverData.data['filename'][index], 50);
        }
      );
      minValues.push(Math.min.apply(null, values.filter((n) => !isNaN(n))));
      maxValues.push(Math.max.apply(null, values.filter((n) => !isNaN(n))));

      const trace = {
        x: this.serverData.dates,
        y: values,
        type: 'scatter',
        mode: 'lines+markers',
        marker: {
          color: colorsForLine,
          symbol: markersForLine,
          size: 5
        },
        line: {
          // color: colorsForLine,
        },
        connectgaps: false,
        name: key,
        description: 'number of ' + key,
        filenames: this.serverData.data['filename'],
        hoverinfo: 'x+text',
        hovertext: textArray
      };
      dataForPlot.push(trace);
      traceIndex++;
    }

    let MINVALUEFORPLOT;
    let MAXVALUEFORPLOT;

    if (this.plotThreshold === undefined) {
      MINVALUEFORPLOT = Math.min.apply(null, minValues) - Math.abs((Math.min.apply(null, minValues) * 0.1));
      MAXVALUEFORPLOT = Math.max.apply(null, maxValues) + (Math.max.apply(null, maxValues) * 0.1);
    } else {
      const height = (this.layoutShapes[this.layoutShapes.length - 1]['y0'] - this.layoutShapes[this.layoutShapes.length - 1]['y1']) * 0.3;
      MINVALUEFORPLOT = this.layoutShapes[this.layoutShapes.length - 1]['y1'] - height;
      MAXVALUEFORPLOT = this.layoutShapes[this.layoutShapes.length - 1]['y0'] + height;
    }


    this.layout = {
      // title: this.chart.name,
      title: this.generatePlotTitle(),
      shapes: [],
      colorway: traceColor.colorRange,
      hovermode: 'closest',
      xaxis: {
        nticks: 10,
      },
      yaxis: {
        type: 'linear',
        range: [MINVALUEFORPLOT, MAXVALUEFORPLOT]
      },
      currentDiv: 'plot'
    };
    this.layout.shapes = this.layoutShapes;
    Plotly.react('plot', dataForPlot, this.layout);

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...