Линейная диаграмма, не соединяющая точки (пакет Sencha-Charts)
У меня возникли проблемы с компонентом картезианской диаграммы extjs, из-за которого он не может провести линию между двумя точками. Я сузил проблему до пропущенных интервальных данных для шага в определенной серии, но не нашел хорошего решения.
В следующем упрощенном примере вы увидите разрыв красной линии, где существуют данные для маркера на синей линии с интервалом "три", который находится между двумя красными маркерами. Я пытаюсь найти способ рисовать прямо от красного маркера с интервалом "два" до маркера с интервалом "четыре" в сценарии, где существуют только частичные данные для 1 или более шагов в нескольких сериях.
В моем прямом приложении данные вдоль оси x на самом деле являются датами, поэтому ожидать данных на каждом интервале для каждой серии нецелесообразно. Я также неохотно подделываю точки, где данных не существует, поскольку маркеры имеют значение, и я делаю с ними другие вещи в click-событиях.
Глядя на API, моя единственная линия исследования, кажется, перегружает серию renderer
функции, но пока, я не выяснил, что вызывает ничью, так как документация в лучшем случае скудна.
Буду признателен за любые указания, прежде чем я начну разбирать структуру, если кто-то уже справился с этим? Или - проверка работоспособности - я пропустил какое-то явно очевидное свойство конфигурации?
Ext.create('Ext.Container', {
renderTo: Ext.getBody(),
width: 600,
height: 400,
layout: 'fit',
items: {
xtype: 'cartesian',
store: {
fields: ['name', 'p1', 'p2'],
data: [
{ name: 'one', p1: 10, p2: 3 },
{ name: 'two', p1: 7, p2: 5 },
{ name: 'three', /*p1: 5,*/ p2: 10 },
{ name: 'four', p1: 2, p2: 8 },
{ name: 'five', p1: 18, p2: 15 }
]
},
axes: [
{
type: 'numeric',
position: 'left',
fields: ['p1', 'p2'],
minimum: 0
},
{
type: 'category',
position: 'bottom',
fields: ['name']
}
],
series: [
{
type: 'line',
style: {
lineWidth: 3
},
xField: 'name',
yField: 'p1',
marker: 'circle',
colors: ['red']
},
{
type: 'line',
style: {
lineWidth: 3
},
xField: 'name',
yField: 'p2',
marker: 'circle',
colors: ['blue']
}
]
}
});
1 ответ
К сожалению, поведение, к которому вы стремитесь, не настраивается. Однако с этим всегда можно что-то сделать. В этом случае вы могли бы реализовать convert
метод для p1
поле.
Логика будет находить предыдущие и следующие действительные данные, а затем вычислять из них интерполяцию, чтобы график был удовлетворен.