Altair - 面积图填充从图表中溢出

问题描述 投票:0回答:1

我正在使用

altair
库来构建图表,但是由于某种原因,区域填充从图表中溢出。

这是代码

import altair as alt

# Determine the minimum and maximum values for the y-axis
y_min = price_data["close"].min()
y_max = price_data["close"].max()

# Create the chart with adjusted y-axis
alt.Chart(price_data).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', title="Date"),
    alt.Y('close:Q', scale=alt.Scale(domain=[y_min, y_max]), title="Close Price")
).properties(
    title=f"{symbol} Price Trend"
)

我怀疑这与

y_min
y_max
有关。

这是生成的图像: Image showing the graph's filling bleeding out

我尝试创建一个从绿色到白色渐变填充的面积图。

python plot altair
1个回答
0
投票

您只是缺少

clip
方法中的
Chart.mark_area
参数。根据 Altair 文档,此参数确定“
Whether a mark be clipped to the enclosing group's width and height
”。

因此,您需要做的就是添加以下行(不要忘记上面行末尾的逗号!):

alt.Chart(price_data).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
    ),
    clip=True, # add this line
).encode(
    alt.X('date:T', title="Date"),
    alt.Y('close:Q', scale=alt.Scale(domain=[y_min, y_max]), title="Close Price")
).properties(
    title=f"{symbol} Price Trend"
)

图表差异

对于我拥有的数据集,这是之前图表:

Before chart

以及之后图表:

Chart with clip=True applied

© www.soinside.com 2019 - 2024. All rights reserved.