[英]Invert axis direction Altair
出于某种原因,使用 altair 绘图时的 Y 轴似乎是倒置的(期望值从图的较低(底部)到较高(顶部)为 go)。 另外,我希望能够更改滴答频率。 对于旧版本,我可以使用ticks=n_ticks
但现在看来这个参数只能使用 boolean。
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
虽然可以手动反转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'
(右):
我没有您的数据,因此很难编写工作代码。
但是,这是一个带有附加刻度的倒置比例的示例,它扩展了简单的散点图示例。 见这里它在维加编辑器。
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:N'
'Efficiency:Q',那可以做到吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.