我正在使用
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
有关。
我尝试创建一个从绿色到白色渐变填充的面积图。
您只是缺少
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"
)
对于我拥有的数据集,这是之前图表:
以及之后图表: