Altair 对应的 ggplots geom_segment
Altair's counterpart to ggplots geom_segment
在 python 数据可视化包 altair 中,我被 mark_bar 困住了。
mark_bar 似乎只能处理至少一个轴上的离散值。
然而,我想要一种类似于 ggplot 中的 geom_segment 的行为,换句话说,可以绘制水平线,指定 x-begin、x-end 和 y 的高度,如下所示:
如你所见,段也可以重叠,这就是我想要的。
使用 altair,我最近得到的是像这样使用 mark_bar:
import altair as alt
import pandas as pd
source = pd.DataFrame([
{"importance": "1.2", "start": 1, "end": 3},
{"importance": "10", "start": 8, "end": 10},
{"importance": "1", "start": 3, "end": 8}
])
alt.Chart(source).mark_bar().encode(
x='start',
x2='end',
y='importance'
)
给出:
当我设置
y='importance:Q'
它没有按预期工作,而是我得到:
这个问题的一部分我真的很喜欢 altairs 的简单性,我很感激任何帮助。
对于两个轴上的定量编码,默认条形方向为 "vertical"
。您可以使用 orient
属性 更改此设置,并且可以使用 height
属性:
调整水平条的粗细
import altair as alt
import pandas as pd
source = pd.DataFrame([
{"importance": "1.2", "start": 1, "end": 3},
{"importance": "10", "start": 8, "end": 10},
{"importance": "1", "start": 3, "end": 8}
])
alt.Chart(source).mark_bar(
orient='horizontal',
height=20
).encode(
x='start:Q',
x2='end:Q',
y='importance:Q'
)
我自己找到的:
source = pd.DataFrame([
{"importance": "1.2", "start": 1, "end": 3 ,"i":2.2},
{"importance": "10", "start": 8, "end": 10, "i": 11},
{"importance": "1", "start": 2, "end": 8,"i": 2}
])
alt.Chart(source).mark_bar().encode(
x='start:Q',
x2='end:Q',
y='importance:Q',
y2 ='i:Q'
)
所以添加一列就足够了,它是 "importance" 的副本加上一些表示条的粗细的偏移量。
在 python 数据可视化包 altair 中,我被 mark_bar 困住了。
mark_bar 似乎只能处理至少一个轴上的离散值。
然而,我想要一种类似于 ggplot 中的 geom_segment 的行为,换句话说,可以绘制水平线,指定 x-begin、x-end 和 y 的高度,如下所示:
如你所见,段也可以重叠,这就是我想要的。 使用 altair,我最近得到的是像这样使用 mark_bar:
import altair as alt
import pandas as pd
source = pd.DataFrame([
{"importance": "1.2", "start": 1, "end": 3},
{"importance": "10", "start": 8, "end": 10},
{"importance": "1", "start": 3, "end": 8}
])
alt.Chart(source).mark_bar().encode(
x='start',
x2='end',
y='importance'
)
给出:
当我设置
y='importance:Q'
它没有按预期工作,而是我得到:
这个问题的一部分我真的很喜欢 altairs 的简单性,我很感激任何帮助。
对于两个轴上的定量编码,默认条形方向为 "vertical"
。您可以使用 orient
属性 更改此设置,并且可以使用 height
属性:
import altair as alt
import pandas as pd
source = pd.DataFrame([
{"importance": "1.2", "start": 1, "end": 3},
{"importance": "10", "start": 8, "end": 10},
{"importance": "1", "start": 3, "end": 8}
])
alt.Chart(source).mark_bar(
orient='horizontal',
height=20
).encode(
x='start:Q',
x2='end:Q',
y='importance:Q'
)
我自己找到的:
source = pd.DataFrame([
{"importance": "1.2", "start": 1, "end": 3 ,"i":2.2},
{"importance": "10", "start": 8, "end": 10, "i": 11},
{"importance": "1", "start": 2, "end": 8,"i": 2}
])
alt.Chart(source).mark_bar().encode(
x='start:Q',
x2='end:Q',
y='importance:Q',
y2 ='i:Q'
)
所以添加一列就足够了,它是 "importance" 的副本加上一些表示条的粗细的偏移量。