Альтаир: повернуть текст по значению, указанному в функции

Я хотел бы повернуть текст на основе значения, указанного в столбце моего фрейма данных pandas. Кажется, что параметр angle в text_config принимает только значения с плавающей запятой и не имеет имени функции.

import pandas as pd
import altair as alt

data = pd.DataFrame(
    {
        "x": [0, 1, 0, -1],
        "y": [1, 0, -1, 0],
        "name": ["UP", "RIGHT", "BOTTOM", "LEFT"],
        "angle": {180, 270, 0, 90},
    }
)

alt.Chart(data).encode(x="x", y="y", text="name").mark_text(angle='angle')

person xoolive    schedule 05.05.2019    source источник


Ответы (1)


К сожалению, угол текста недоступен в качестве канала кодирования. Лучшее, что вы можете сделать, - это вручную разделить данные и отметки слоев с желаемыми углами; Например:

import pandas as pd
import altair as alt

data = pd.DataFrame(
    {
        "x": [0, 1, 0, -1],
        "y": [1, 0, -1, 0],
        "name": ["UP", "RIGHT", "BOTTOM", "LEFT"],
        "angle": [180, 270, 0, 90],
    }
)

base = alt.Chart(data).encode(x="x", y="y", text="name")

layers = [
    base.transform_filter(alt.datum.name == name).mark_text(angle=angle)
    for (name, angle) in zip(data.name, data.angle)
]

alt.layer(*layers)

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

person jakevdp    schedule 05.05.2019