Удаление пробела между метками в визуализации altair

#python #altair

#python #альтаир

Вопрос:

У меня есть визуализация, в которой я пытаюсь увеличить размер метки, а также заставить их соприкасаться (уменьшить расстояние между метками) с помощью altair. Есть ли способ сделать это без простого использования ‘size=’? Я хотел бы сделать это адаптируемым к функции и не жестко кодировать размер, но чтобы он зависел от предоставленных данных.

Вот мой текущий код на данный момент:

 alt.Chart(df).mark_square().encode(
x=alt.X('p1:N'),
y=alt.Y('p2:N'),
color=alt.Color('weight:O', legend=alt.Legend(type='symbol'), scale=alt.Scale(scheme='blues'))
               
).properties(
    height=500,
    width=500
 )
 

Мой текущий результат:

введите описание изображения здесь

Мой предполагаемый результат, которого я пытаюсь достичь:

введите описание изображения здесь

Ответ №1:

Если вы используете mark_rect() вместо mark_square() с номинальной или порядковой кодировкой, размер каждой метки будет автоматически скорректирован, чтобы заполнить пробел.

Ответ №2:

size используется ли свойство с Altair этого момента для управления размером меток, и поэтому point/circle/square , пожалуйста, проверьте altair-viz.github.io/user_guide/marks.html ?выделите =mark_square. Чтобы показать, как его можно использовать с помощью функции, я сделал это:

 def plot_mark_squares(df, bandsize=0, size=30, width=500, height=500):  
    alt.Chart(df).mark_square().encode(
    x=alt.X('p1:N'),
    y=alt.Y('p2:N'),
    color=alt.Color('weight:O', legend=alt.Legend(type='symbol'), scale=alt.Scale(scheme='blues'))
    ).properties(
           height=500,
           width=500,
           bandsize=bandsize,
           size=size
    )

plot_mark_squares(df, 0.1, 50)