- Este artículo comparte otra herramienta de visualización interactiva de Python, Altair . La capa inferior de Altair es Vega-Lite (basada en una gramática de visualización interactiva simple , A Grammar of Interactive Graphics), con efectos como:
- El autor de Altair es Jake Vanderplas. Es un gran hombre. Anteriormente fue Decano del Instituto de Ciencias Físicas de la Universidad de Washington eScience, y ahora es Ingeniero de Software en Google. Es un apasionado de Python, Astronomía y Datos. Ciencia; también es un entusiasta activo del código abierto.Puede ver su charla en conferencias de PyData a lo largo de los años. Además de Altair, ha hecho muchas contribuciones a bibliotecas famosas de Python como Scikit-Learn, Scipy, Matplotlib, IPython, etc .; autor de dos libros de alto nivel Python Data Science Handbook y A Whirlwind Tour of Python.
Tabla de contenido
1. Inicio rápido de los gráficos básicos de Altair
El script Altair de Python se convierte a JSON
2. Inicio rápido de los gráficos complejos de Altair
configurar los métodos _ * () para personalizar los atributos de la imagen
Layer, HConcat, VConcat, Repeat, Facet ayudan a altair a crear gráficos compuestos fácilmente
3. Uso compartido de demostraciones basado en Altair
Un caso en el sitio web oficial sobre el clima.
Sitio web oficial: https://altair-viz.github.io/index.html
1. Inicio rápido de los gráficos básicos de Altair
Este resumen presenta cómo dibujar rápidamente gráficos básicos comunes , como "barra", "círculo", "cuadrado", "marca", "línea", * "área", "punto", "regla", "forma geográfica", y "texto", etc.
pip instalar altair
pip install altair vega_datasets -i https://pypi.tuna.tsinghua.edu.cn/simple#国内源加速安装
Dibujo de Altair paso a paso
-
preparación de datos
El conjunto de datos de iris iris todavía se utiliza. Para la introducción del conjunto de datos, consulte: Visualización de Python | matplotlib10-drawing scatter plots
import seaborn as sns
pd_iris = sns.load_dataset("iris")
pd_iris.head(n=5)
-
Dibujo rapido
#快速绘图
import altair as alt
import pandas as pd
alt.Chart(pd_iris).mark_point().encode(x='sepal_length',
y='sepal_width',
color='species')
-
División de pasos de dibujo
Desde el código de alt. Chart (pd_iris). Mark_ punto (). Encode (x = 'sepal_length', Y = 'sepal_width', color = 'especie'), podemos ver que Altair dibujo principalmente utiliza el gráfico () método y el método mark_ * () y el método encode () .
El método Chart () convierte los datos en un objeto altair.vegalite.v4.api.Chart
La altura, el ancho, el color de fondo, etc. de la imagen se pueden establecer entre corchetes. Para obtener más información, consulte: https://altair-viz.github.io/user_guide/generated/toplevel/altair.Chart.html?highlight = gráfico
El método mark _ * () especifica los gráficos que se mostrarán, como dibujar un gráfico de dispersión mark_point ()
El método mark _ * () establece atributos gráficos, como color, tamaño, etc.
Se pueden establecer varios atributos de los gráficos que se mostrarán entre paréntesis. Tome mark_point () para establecer el color del punto como ejemplo de la siguiente manera.
Para ver otros parámetros detallados, consulte: https://altair-viz.github.io/user_guide/generated/toplevel/altair.Chart.html?highlight=mark_point#altair.Chart.mark_point
El método encode () establece el mapeo del eje de coordenadas
Parámetros detallados: https://altair-viz.github.io/user_guide/generated/toplevel/altair.Chart.html?highlight=encode#altair.Chart.encode
El script Altair de Python se convierte a JSON
secuencia de comandos de Python
import altair as alt
import pandas as pd
data = pd.DataFrame({'x': ['A', 'B', 'C', 'D'], 'y': [1, 2, 1, 2]})
alt.Chart(data).mark_bar().encode(
x='x',
y='y',
)
Haga clic para obtener el script json
{
"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}},
"data": {"name": "data-39e740acccd9d827d4364cdbd6d37176"},
"mark": "bar",
"encoding": {
"x": {"type": "nominal", "field": "x"},
"y": {"type": "quantitative", "field": "y"}
},
"$schema": "https://vega.github.io/schema/vega-lite/v4.8.1.json",
"datasets": {
"data-39e740acccd9d827d4364cdbd6d37176": [
{"x": "A", "y": 1},
{"x": "B", "y": 2},
{"x": "C", "y": 1},
{"x": "D", "y": 2}
]
}
}
2. Inicio rápido de los gráficos complejos de Altair
Esta sección presenta brevemente gráficos más complejos, como títulos de diagramas de facetas personalizados, leyendas, métodos configure _ * () , métodos selection () binding _ * () ,方法、condition()方法、
configurar los métodos _ * () para personalizar los atributos de la imagen
El método configure_header () personaliza el encabezado
import altair as alt
from vega_datasets import data#vega_datasets为altair的一个内置数据集模块
source = data.cars.url
chart = alt.Chart(source).mark_point().encode(x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='Origin:N',
column='Origin:N').properties(
width=180, height=180)
chart.configure_header(titleColor='green',
titleFontSize=14,
labelColor='red',
labelFontSize=14)
Personalice la leyenda del método configure_legend ()
import altair as alt
from vega_datasets import data
source = data.cars.url
chart = alt.Chart(source).mark_point().encode(x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='Origin:N')
chart.configure_legend(strokeColor='gray',
fillColor='#EEEEEE',
padding=10,
cornerRadius=10,
orient='top-right')
Para obtener más introducción al método de configuración , consulte: https://altair-viz.github.io/user_guide/configuration.html
La selección, la condición y el enlace hacen que los gráficos de altair interactúen mejor con el mouse
Los métodos de selección (), condición () y enlace () se utilizan principalmente aquí , una breve introducción, consulte para obtener más detalles: https://altair-viz.github.io/user_guide/interactions.html
-
método de selección ()
El ratón puede capturar ligeramente una determinada parte del gráfico.
-
método condition ()
Haga que la parte capturada por el mouse se ilumine y la parte que no se captura se atenúe.
-
método de enlace _ * ()
El efecto es el siguiente:
Layer, HConcat, VConcat, Repeat, Facet ayudan a altair a crear gráficos compuestos fácilmente
-
hconcat水平方向拼图
import altair as alt
from vega_datasets import data
iris = data.iris.url
chart1 = alt.Chart(iris).mark_point().encode(x='petalLength:Q',
y='petalWidth:Q',
color='species:N').properties(
height=300, width=300)
chart2 = alt.Chart(iris).mark_bar().encode(x='count()',
y=alt.Y('petalWidth:Q',
bin=alt.Bin(maxbins=30)),
color='species:N').properties(
height=300, width=100)
chart1 | chart2
alt.hconcat(chart1, chart2)
-
rompecabezas vertical vconcat
-
LayerChart图层叠加
-
RepeatChart dibuja gráficos similares
from vega_datasets import data
iris = data.iris.url
base = alt.Chart().mark_point().encode(color='species:N').properties(
width=200, height=200).interactive()
chart = alt.vconcat(data=iris)
for y_encoding in ['petalLength:Q', 'petalWidth:Q']:
row = alt.hconcat()
for x_encoding in ['sepalLength:Q', 'sepalWidth:Q']:
row |= base.encode(x=x_encoding, y=y_encoding)
chart &= row
chart
-
Faceta de gráficos FacetChart
import altair as alt
from altair.expr import datum
from vega_datasets import data
iris = data.iris.url
base = alt.Chart(iris).mark_point().encode(x='petalLength:Q',
y='petalWidth:Q',
color='species:N').properties(
width=160, height=160)
chart = alt.hconcat()
for species in ['setosa', 'versicolor', 'virginica']:
chart |= base.transform_filter(datum.species == species)
chart
Gráficos compuestos personalizados Chart.resolve_scale (), Chart.resolve_axis () y Chart.resolve_legend ()
Por ejemplo, use resolve_scale () para usar ruedas de color para dos gráficos respectivamente.
from vega_datasets import data
source = data.cars()
base = alt.Chart(source).mark_point().encode(
x='Horsepower:Q', y='Miles_per_Gallon:Q').properties(width=200, height=200)
alt.concat(base.encode(color='Origin:N'),
base.encode(color='Cylinders:O')).resolve_scale(color='independent')
3. Uso compartido de demostraciones basado en Altair
Un caso de puerta de enlace oficial y clima.
from vega_datasets import data
df = data.seattle_weather()
scale = alt.Scale(
domain=['sun', 'fog', 'drizzle', 'rain', 'snow'],
range=['#e7ba52', '#c7c7c7', '#aec7e8', '#1f77b4', '#9467bd'])
brush = alt.selection(type='interval')
points = alt.Chart().mark_point().encode(
alt.X('temp_max:Q', title='Maximum Daily Temperature (C)'),
alt.Y('temp_range:Q', title='Daily Temperature Range (C)'),
color=alt.condition(brush,
'weather:N',
alt.value('lightgray'),
scale=scale),
size=alt.Size('precipitation:Q',
scale=alt.Scale(range=[1, 200]))).transform_calculate(
"temp_range",
"datum.temp_max - datum.temp_min").properties(
width=600, height=400).add_selection(brush)
bars = alt.Chart().mark_bar().encode(
x='count()',
y='weather:N',
color=alt.Color('weather:N', scale=scale),
).transform_calculate(
"temp_range",
"datum.temp_max - datum.temp_min").transform_filter(brush).properties(
width=600)
alt.vconcat(points, bars, data=df)
Para otros casos, consulte el sitio web oficial, no más manejo:
Sitio web oficial: https://altair-viz.github.io/index.html
-
Gráfico simple
-
gráfico de barras
-
gráfico de líneas
-
gráfico de área
-
diagrama de dispersión
-
gráfico de histgogram
-
mapa
-
Diagrama interactivo
-
Estudios de caso
-
Otros gráficos