Error de validación del esquema de Altair al hacer facetas.
Tengo este marco de datos:
Y quiero hacer un gráfico de barras apiladas horizontales que muestre la misma información que este gráfico:
He generado este código:
chart = alt.Chart(df<em>q4).mark</em>bar().encode(
x = alt.X('value:Q', axis=None),
color=alt.Color('color_code:N', scale=None),
).facet("title:N"
).properties(
width=400,
height=700)
<p>chart
<code>
Sin embargo, arroja este error:
</code>
SchemaValidationError: especificación no válida</p>
<pre><code> altair.vegalite.v4.api.Chart, validando 'requerido'
'datos' es una propiedad requerida
</code></pre>
<p>alt.FacetChart(...)
No estoy seguro de por qué no puedo fragmentar. También he intentado codificar el objeto de fragmento dentro de la codificación del gráfico, y eso tampoco funcionó.
También me gustaría incorporar algún código en mi gráfico que muestre solo los títulos, colores y valores relacionados con una temporada específica. Esto se hará mediante la inclusión del código en una función que sea algo como:
definir paleta de colores(temporada):
davy.ai
Parece que el error se debe a que la especificación del gráfico no incluye la propiedad de datos. Deberías agregar la propiedad de datos con
df_q4
como valor. Además, para el facetado, debes especificar el nombre de la columna por la que deseas facetar.Aquí está el código corregido:
Para mostrar solo los títulos, colores y valores relacionados con una temporada específica, puedes filtrar el dataframe antes de crear el gráfico. Aquí hay una función de ejemplo que toma una temporada como argumento y devuelve un gráfico con solo los datos para esa temporada:
Puedes usar esta función de la siguiente manera: