Ниже приведен код, который я использовал для создания графика. Моя долгосрочная цель - иметь
Гистограмма, где я задаю некоторые параметры.
Затем я, основываясь на множественном выборе на гистограмме, создаю прямоугольник 1xN датчиков.
Затем я могу щелкнуть любой из этих датчиков, чтобы с течением времени генерировать их значения.
Это для установки умного дома. У меня есть номера. В каждой комнате есть датчики. В конечном итоге у меня будет гистограмма, отображающая информацию об идентификаторах номеров. Я могу выбрать любое подмножество идентификаторов помещений, чтобы создать прямоугольник с выбираемыми блоками идентификаторов датчиков, присутствующих в этой комнате. Затем я могу выбрать любой из этих датчиков, чтобы сгенерировать временной ряд их значений во времени.
Ниже приведена последняя часть. Я упростила свой набор данных, чтобы у меня был только 1 номер комнаты и 1 датчик.
Когда код выполняется, по умолчанию он должен показывать «все» датчики. Хотя мне это не нравится, я считаю, что это предполагаемое поведение.
Моя цель заключается в том, чтобы иметь возможность выбирать датчик и отображать только эту линию датчиков. Я тестирую простой случай с одним датчиком в наборе данных, чтобы убедиться, что все работает. Тем не менее
После того, как я щелкну сенсором и он преобразуется, график станет пустым
Мой код очень похож на рабочий код, который используется для тепловых карт и гистограмм, поэтому я не уверен, что вызывает такое поведение.
Код и картинки ниже.
roomID = '5K3'
senID = 0868
rID = sensor_table['room_id'] == roomID
sID = sensor_table['sens_id'] == senID
sensor_vals = sensor_table[ rID & sID ]
selector = alt.selection_multi()
sensor_vals = sensor_vals[ ['cur_date', 'cur_time', 'discriminator', 'reading', 'sens_id', 'room_id'] ] ## Take only the columns we need. Drop others. Discriminator not used in the simple case, but will be used for updating bargraph once step one is implemented.
rect6= alt.Chart(sensor_vals).mark_rect().encode(
x=alt.X('sens_id:N', axis=alt.Axis(title='Sensor ID', grid=True)),
color=alt.condition(selector, 'count()', alt.value('lightgray'))
).add_selection(selector)
c = alt.Chart(sensor_vals).mark_line().encode(
x='cur_time:N',
y='reading:Q',
).transform_filter(selector)
alt.vconcat(
rect6,
c
).resolve_legend(
color='independent',
size='independent'
).save(outputSensor)
Ниже приведены изображения загрузки графика по умолчанию и загрузки графика после выбора подошвенного датчика из «тепловой карты»