反转轴方向Altair

时间:2018-04-13 12:36:01

标签: axis invert altair

由于某种原因,用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

这个数字: enter image description here

1 个答案:

答案 0 :(得分:2)

我没有您的数据,因此很难编写工作代码。

但是这里是一个带有额外刻度的倒置刻度的示例,它扩展了simple scatter plot示例。请参阅vega编辑器中的here

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

但是,我认为你的效率变量可能只有错误type。您可以尝试将'Efficiency:N'替换为''效率:Q',那可能会这样做吗?