Ich visualisiere einige Daten mit Altair und möchte Beschriftungen in mein Diagramm einfügen. Ich habe https://altair-viz.github.io/gallery/scatter_with_labels.html als Beispiel verwendet.
Ich möchte die Größe meiner Punkte anpassen, aber nicht die Größe des Beschriftungstextes.
Über den obigen Link:
import altair as alt
import pandas as pd
source = pd.DataFrame({
'x': [1, 3, 5, 7, 9],
'y': [1, 3, 5, 7, 9],
'label': ['A', 'B', 'C', 'D', 'E']
})
points = alt.Chart(source).mark_point().encode(
x='x:Q',
y='y:Q'
)
text = points.mark_text(
align='left',
baseline='middle',
dx=7
).encode(
text='label'
)
points + text
Dies funktioniert wie erwartet.
Wenn ich jedoch die Größe meiner Punkte variieren möchte, um zusätzliche Informationen anzuzeigen, points
passe ich den Block so an, dass er jetzt lautet:
x='x:Q',
y='y:Q'
size='x'
)
Leider haben wir jetzt auch eine Textgröße, die mit zunimmt x
. Argh!
Das Festlegen eines size
Befehls innerhalb des text
Blocks überschreibt die erwartete Textgröße nicht. Die Vorschläge zur Achsenkonfiguration unter Wie legen Sie die Achsenschriftgröße in Altair fest? habe mein Problem nicht gelöst. Wenn ich configure_text
von https://altair-viz.github.io/user_guide/generated/toplevel/altair.Chart.html#altair.Chart.configure_text verwende, erhalte ich: ValueError: Objects with "config" attribute cannot be used within LayerChart. Consider defining the config attribute in the LayerChart object instead.
und weiß nicht, wohin ich als nächstes gehen soll.
Wie kann ich dafür sorgen, dass der Text dieselbe Größe behält, während sich die Markierungsgröße ändert?
Wenn Sie dies tun text = points.mark_text()
, text
erbt der Layr alles, was Sie in der points
Ebene definiert haben: hier schließt dies die size
Codierung ein.
Wenn Sie nicht möchten, dass die text
Ebene eine Größencodierung hat, können Sie diese nur für die points
Ebene angeben . Zum Beispiel könnten Sie so etwas tun:
points = alt.Chart(source).mark_point().encode(
x='x:Q',
y='y:Q',
size='x'
)
text = alt.Chart(source).mark_text(
align='left',
baseline='middle',
dx=7
).encode(
x='x:Q',
y='y:Q',
text='label'
)
points + text
Die Grundeinstellung size
im mark_text()
Block überschreibt dies nicht, da Codierungen Markierungseigenschaften immer ersetzen. Weitere Informationen hierzu finden Sie unter https://altair-viz.github.io/user_guide/customization.html#global-config-vs-local-config-vs-encoding .
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen