2

出于某种原因,使用 altair 绘图时的 Y 轴似乎是倒置的(期望值从绘图的较低(底部)到较高(顶部))。另外,我希望能够更改滴答频率。我可以使用旧版本,ticks=n_ticks但现在看来这个参数只能取布尔值。

import altair as alt
alt.renderers.enable('notebook')

eff_metals =  pd.read_excel(filename, sheet_name='summary_eff_metals')
points = alt.Chart(eff_metals, height=250, width=400).mark_circle().encode(
    x=alt.X('Temperature:Q',axis=alt.Axis(title='Temperature (°C)'),
            scale=alt.Scale(zero=False, padding=50)),
    y=alt.Y('Efficiency:N',axis=alt.Axis(title='Efficiency (%)'),
            scale=alt.Scale(zero=False, padding=1)),
    color=alt.Color('Element:N'),
)
text = points.mark_text(align='right', dx=0, dy=-5).encode(
    text='Element:N'
)
chart = alt.layer(points, text, data=eff_metals, 
                  width=600, height=300)
chart

和图: 在此处输入图像描述

4

2 回答 2

4

我没有你的数据,所以很难编写工作代码。

但这里有一个带有额外刻度的倒置刻度示例,类似于带有工具提示的示例散点图示例。在 vega 编辑器中查看这里

import altair as alt
from vega_datasets import data
    
iris = data.iris()
    
alt.Chart(iris).mark_point().encode(
    x='petalWidth',
    y=alt.Y('petalLength', scale=alt.Scale(domain=[7,0]), axis=alt.Axis(tickCount=100)),
    color='species'
).interactive()

这可能适用于您的数据:

eff_metals =  pd.read_excel(filename, sheet_name='summary_eff_metals')
points = alt.Chart(eff_metals, height=250, width=400).mark_circle().encode(
    x=alt.X('Temperature:Q',axis=alt.Axis(title='Temperature (°C)'),
            scale=alt.Scale(zero=False, padding=50)),
    y=alt.Y('Efficiency:N',axis=alt.Axis(title='Efficiency (%)'),
            scale=alt.Scale(zero=False, padding=1, domain=[17,1])),
    color=alt.Color('Element:N'),
)
text = points.mark_text(align='right', dx=0, dy=-5).encode(
    text='Element:N'
)
chart = alt.layer(points, text, data=eff_metals, 
                  width=600, height=300)
chart

但是,我认为您的效率变量可能只是错误的类型。您可以尝试'Efficiency:N'用“Efficiency:Q”替换,这样可以吗?

于 2018-04-15T12:07:13.260 回答
0

虽然可以domain手动反转,但这需要硬编码边界。

相反,我们可以只传递Scale(reverse=True)给轴编码,例如:

from vega_datasets import data

alt.Chart(data.wheat().head()).mark_bar().encode(
    x='wheat:Q',
    y=alt.Y('year:O', scale=alt.Scale(reverse=True)),
)

这里它被传递给alt.Y,所以年份是倒置的(左)与默认的y='year:O'(右):

倒置与默认 y 轴

于 2022-02-28T14:02:22.837 回答