X-масштаб становится испорченным при добавлении серии с различным количеством точек данных в диаграмму [duplicate]

Выполнение на вашей рабочей станции

Как правило, процессы, выполняющиеся без привилегий root, не могут связываться с портами ниже 1024.

Так что попробуйте более высокий порт или запустите с повышенными привилегиями с помощью sudo. Вы можете понизить привилегии после того, как вы привязались к нижнему порту, используя process.setgid и process.setuid .

Выполняется на heroku

При запуске ваших приложений на heroku вы должны использовать порт, как указано в переменной окружения PORT.

См. http://devcenter.heroku.com/articles/node-js

var server = require('http').createServer();
var port = process.env.PORT || 3000;

server.listen(port, function() {
  console.log('Listening on ' + port);
});
2
задан TaW 21 June 2016 в 08:47
поделиться

1 ответ

Распространенная ошибка.

string datetime = dataGridView1.Rows[i].Cells[2].Value.ToString();

Это неправильно! Если вы добавляете значения x в качестве строк, все они добавляются как 0, а Series не могут выровнять их с соответствующими слотами на оси X. Поэтому они добавляются слева направо последовательно.

Вместо этого просто добавьте x-значения в качестве DateTimes, которые они должны быть!

Итак, если Cells содержит DateTime используются:

DateTime datetime = (DateTime) dataGridView1.Rows[i].Cells[2].Value;

Если они этого не делают, преобразуйте их в DateTime

DateTime datetime = Convert.ToDateTime(dataGridView1.Rows[i].Cells[2].Value);

. Для управления типом значений x установите XValueType для каждой серии:

chart_dashboard.Series[yourSeries].XValueType = ChartValueType.DateTime;

Чтобы определить способ отображения этикеток оси, установите их форматирование:

chart_dashboard[ChartAreas[0].AxisX.LabelStyle.Format = someDateTimeFormatString;

Чтобы создать строку типа «Неделя 1», вы [

  • ]
    • установите XValueType на int16
    • , добавьте значение x в качестве чисел недели
    • , как ..axis.LabelStyle.Format = "Week #0";

    Чтобы извлечь номер из ваших данных, разделенных пробелом, и Convert.ToInt16!


    Если вам действительно нужно вставлять разреженные значения x в виде строк, для вставки манекена DataPoint в каждый промежуток в серии.

    Создание манекена DataPoint прост:

     DataPoint dp = new DataPoint() { IsEmpty = true};
    

    Но знание того, где пробелы заранее - это вызов! «Лучший» способ - передать данные и заполнить их перед добавлением очков. Или перейдите к нему позже, а не добавьте, вставив думмы в промежутки. И это гораздо больше проблем, чем получение данных в первую очередь!

  • 4
    ответ дан TaW 15 August 2018 в 21:17
    поделиться
    • 1
      Спасибо, TaW! он отлично работает с форматом DateTime :) – Jacky Le 21 June 2016 в 09:18
    • 2
      Однако, если значение DateTime как строка имеет какой-либо метод для устранения этой проблемы. – Jacky Le 21 June 2016 в 10:01
    • 3
      Я не понимаю. Это был вопрос? Пожалуйста, объясни! (Если вы имели в виду, что делать, если у вас нет даты или числового значения? Тогда вам нужно вставить пустые фиктивные точки для каждого слота, в котором отсутствует точка в ряду, для этого вам все равно нужно отслеживать x -значения, которые теряются, если вы их каким-то образом не сохраните. Одно место было бы тегами DataPoints. Но на самом деле предоставление хороших данных с числовыми / datetime - лучший способ уйти далеко.) – TaW 21 June 2016 в 10:18
    Другие вопросы по тегам:

    Похожие вопросы: