Я пытаюсь контролировать метки значений для оси x моего zedgraph. Раньше ярлыки «летали» и не оставались на оси. Они могут перемещаться влево или вправо по оси, появляться и исчезать в зависимости от данных. Как на картинке ниже
Я сначала попытался нарисовать ярлыки сам, когда наконец нашел хорошую документацию для библиотеки zedgraph а>. Там я нашел [AXIS].Scale
варианты MajorStep
MinorStep
и BaseTic
. Что, если установлено правильно, должно привести к тому, что метки останутся на месте и просто изменят значение по мере добавления данных.
Проблема, с которой я сталкиваюсь, заключается в том, что моя шкала по оси X находится в XDate
единицах. Это означает, что я не могу делать простую математику, на которую надеялся. Так что с тех пор я придумал способ найти нужные мне значения, используя TimeSpan
и DateTime
. Ниже curMaxX
и curMinX
находятся XDate
значения текущих минимального и максимального значений оси x (curMinX
в основном должно быть DateTime.Now
, потому что эти данные являются данными в реальном времени)
// Setup
TimeSpan scaleDist = curMaxX.DateTime.Subtract(curMinX.DateTime);
TimeSpan major = new TimeSpan(scaleDist.Ticks / 5);
TimeSpan minor = new TimeSpan(major.Ticks / 5);
TimeSpan baseT = new TimeSpan(curMinX.DateTime.Ticks + major.Ticks);
// Setting the values
myPane.XAxis.Scale.MajorStep = new XDate(new DateTime(major.Ticks));
myPane.XAxis.Scale.MinorStep = new XDate(new DateTime(minor.Ticks));
myPane.XAxis.Scale.BaseTic = new XDate(new DateTime(baseT.Ticks));
// Print statement of the values
SDist: 00:00:10
Major: 00:00:02
Minor: 00:00:00.4000000
BaseT: 735382.07:32:34
BaseTAsDateTime: 5/30/2014 7:32:34 AM
CurMinX: 5/30/2014 7:32:32 AM
Хотя установка значений как таковых по-прежнему не дает того, чего я хочу. С этим кодом моя ось x выглядит так
Это несколько ближе к тому, что я ищу, но все же не так. Показан только один крупный тик и никаких второстепенных. Я не уверен, какие еще есть способы указать значения.
Для документации по основным и второстепенным шагам написано
Для осей даты это значение определяется в единицах Major / MinorUnit.
У меня MajorUnit
это минуты, а MinorUnit
- секунды, но я передаю им значение XDate
, которое указывает как минуты, так и секунды. Кроме того, установка значений в виде долей от целого (поэтому, если я хочу, чтобы MajorStep
составлял 2 секунды, я бы установил его как (2/60)), ничего не отображается.
Есть идеи / предложения?