首页 > 解决方案 > Altair - 线上方的渐变

问题描述

我想创建一个面积图,但是渐变应该从线条向上延伸到图表的顶部。有任何想法吗?

此处为常规梯度图示例https://altair-viz.github.io/gallery/area_chart_gradient.html

alt.Chart(source).transform_filter(
    'datum.symbol==="GOOG"'
).mark_area(
    line={'color':'darkgreen'},
    color=alt.Gradient(
        gradient='linear',
        stops=[alt.GradientStop(color='white', offset=0),
               alt.GradientStop(color='darkgreen', offset=1)],
        x1=1,
        x2=1,
        y1=1,
        y2=0
    )
).encode(
    alt.X('date:T'),
    alt.Y('price:Q')
)

标签: altair

解决方案


您可以通过将y2编码设置为alt.value(0)- 在这种情况下,零测量图表轴顶部的像素:

import altair as alt
from vega_datasets import data

source = data.stocks()

alt.Chart(source).transform_filter(
    'datum.symbol==="GOOG"'
).mark_area(
    line={'color':'darkgreen'},
    color=alt.Gradient(
        gradient='linear',
        stops=[alt.GradientStop(color='white', offset=0),
               alt.GradientStop(color='darkgreen', offset=1)],
        x1=1,
        x2=1,
        y1=1,
        y2=0
    )
).encode(
    alt.X('date:T'),
    alt.Y('price:Q'),
    y2=alt.value(0)
)

在此处输入图像描述


推荐阅读