Точки — Point

Примитив point представляет каждую точку данных символом. Он часто используется, например, в диаграммах рассеяния.

Свойства точек

Определение point поддерживает любые стандартные свойства и следующие специальные свойства:

Нажмите, чтобы показать таблицу
СвойствоТипОписание
shapeanyOf(anyOf(SymbolShape, string), ExprRef)

Форма точек. Поддерживаются "circle", "square", "cross", "diamond", "triangle-up", "triangle-down", "triangle-right", "triangle-left"; символ линии "stroke"; направленные формы "arrow", "wedge", "triangle"; пользовательская строка пути SVG. Для правильного размера путь должен находиться в квадрате с координатами от -1 до 1 по обеим осям. По умолчанию: "circle".

sizeanyOf(number, ExprRef)

Стандартный размер примитива. Для point/circle/square — площадь в пикселях; длины сторон растут пропорционально квадратному корню из этого значения. Для bar — размер полосы в пикселях, для text — размер шрифта. По умолчанию: 30 для point/circle/square; step ширины/высоты; 2 для bar с дискретным измерением; 5 для bar с непрерывным измерением; 11 для text.

Примеры

Точечная диаграмма

Сопоставление поля только с x или только с y создаёт точечную диаграмму:

import altair as alt
from altair.datasets import data

source = data.movies()
alt.Chart(source).mark_point().encode(
    x="IMDB Rating:Q"
)

Диаграмма рассеяния

Сопоставление полей с обоими каналами x и y создаёт диаграмму рассеяния:

import altair as alt
from altair.datasets import data

source = data.cars()

alt.Chart(source).mark_point().encode(
    x="Horsepower:Q",
    y="Miles_per_Gallon:Q",
)

По умолчанию point имеет только границу и прозрачную внутреннюю область. Включите filled=True, чтобы получить заливку:

import altair as alt
from altair.datasets import data

source = data.cars()

alt.Chart(source).mark_point(filled=True).encode(
    x="Horsepower:Q",
    y="Miles_per_Gallon:Q",
)

Пузырьковая диаграмма

Сопоставив третье поле каналу size, можно превратить диаграмму рассеяния в пузырьковую:

import altair as alt
from altair.datasets import data

source = data.cars()

alt.Chart(source).mark_point().encode(
    x="Horsepower:Q",
    y="Miles_per_Gallon:Q",
    size="Acceleration:Q",
)

Цвет и форма точек

Поля можно кодировать через color и shape. Здесь Origin используется в обоих каналах:

import altair as alt
from altair.datasets import data

source = data.cars()

alt.Chart(source).mark_point().encode(
    alt.X("Miles_per_Gallon:Q").scale(zero=False),
    alt.Y("Horsepower:Q").scale(zero=False),
    color="Origin:N",
    shape="Origin:N",
)

Точечная диаграмма со случайным смещением

Чтобы разнести точки на дискретной шкале, добавьте случайное смещение:

import altair as alt
from altair.datasets import data

source = data.cars()

alt.Chart(source).mark_point().encode(
    x="Horsepower:Q",
    y="Cylinders:O",
    yOffset="random:Q",
).transform_calculate(
    random="random()"
).properties(
    height=alt.Step(50)
)

Пример векторов ветра

Форма wedge и канал angle позволяют создать карту векторов ветра. Другие формы: "circle", "square", "cross", "diamond", "triangle-up", "triangle-down", "triangle-right", "triangle-left", "stroke", "arrow" и "triangle".

import altair as alt
from altair.datasets import data

source = data.windvectors()

alt.Chart(source).mark_point(shape="wedge", filled=True).encode(
    latitude="latitude",
    longitude="longitude",
    color=alt.Color("dir").scale(domain=[0, 360], scheme="rainbow").legend(None),
    angle=alt.Angle("dir").scale(domain=[0, 360], range=[180, 540]),
    size=alt.Size("speed").scale(rangeMax=500),
).project("equalEarth")

Географические точки

Географические координаты можно сопоставить каналам longitude и latitude выбранной проекции. Например, покажем основные аэропорты США:

import altair as alt
from altair.datasets import data

airports = data.airports()
states = alt.topo_feature(data.us_10m.url, feature="states")

# US states background
background = alt.Chart(states).mark_geoshape(
    fill="lightgray",
    stroke="white"
).properties(
    width=500,
    height=300,
).project("albersUsa")

# airport positions on background
points = alt.Chart(airports).mark_circle(
    size=10,
    color="steelblue",
).encode(
    longitude="longitude:Q",
    latitude="latitude:Q",
    tooltip=["name", "city", "state"],
)

background + points