Альтаир: вращать текст по значению, указанному в объекте - PullRequest
1 голос
/ 05 мая 2019

Я бы хотел повернуть текст на основе значения, указанного в столбце моего панда DataFrame. Кажется, что параметр 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')

1 Ответ

1 голос
/ 05 мая 2019

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

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)

enter image description here

...