#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)