Python Altair-设置交互式图形的最小条高
我目前正在生成一个交互式堆叠条形图,在这里,可以单击单个堆叠的条形图来更新其他图形 我遇到的问题是规模问题。有时,我会有一个数据集,其中1个条的读数为25000,另一个条的读数为1 当刻度由于另一个读数升高到如此高的位置时,几乎不可能看到,更不用说点击1了 是否可以为任何杆件设置“最小”高度?我知道这可能是困难或奇怪的,因为Y轴缩放Python Altair-设置交互式图形的最小条高,python,data-visualization,vega-lite,altair,Python,Data Visualization,Vega Lite,Altair,我目前正在生成一个交互式堆叠条形图,在这里,可以单击单个堆叠的条形图来更新其他图形 我遇到的问题是规模问题。有时,我会有一个数据集,其中1个条的读数为25000,另一个条的读数为1 当刻度由于另一个读数升高到如此高的位置时,几乎不可能看到,更不用说点击1了 是否可以为任何杆件设置“最小”高度?我知道这可能是困难或奇怪的,因为Y轴缩放 谢谢 在Altair或Vega Lite中,除了修改可能会产生误导的输入数据外,没有办法设置最小条高 也许您可以将另一个图表与共享轴连接起来,并通过共享轴提供交互?
谢谢 在Altair或Vega Lite中,除了修改可能会产生误导的输入数据外,没有办法设置最小条高 也许您可以将另一个图表与共享轴连接起来,并通过共享轴提供交互?例如:
import pandas as pd
import altair as alt
df = pd.DataFrame({
'x': list('ABCDE'),
'y': [1, 2, 3, 10000, 500]
})
selector = alt.selection_single(fields=['x'])
color = alt.condition(selector, alt.value('steelblue'), alt.value('lightgray'))
base = alt.Chart(df).mark_bar().encode(
color=color
).add_selection(
selector
)
bars = base.encode(
x=alt.X('x:N', axis=None),
y='y:Q',
)
rects = base.encode(
x='x:N'
)
alt.vconcat(bars, rects).configure_concat(spacing=0)
您可以使用
strokeWidth
绘制边缘:
import altair as alt
import pandas as pd
df = pd.DataFrame(dict(x=["a", "b"], y=[1, 1000]))
select = alt.selection(type="single", fields=["x"], empty="none")
alt.Chart(df).mark_bar(strokeWidth=5).encode(
y="x",
x="y",
fill=alt.condition(select, alt.value("red"), alt.value("blue")),
stroke=alt.condition(select, alt.value("red"), alt.value("blue")),
).add_selection(select)
如果不想显示笔划,可以设置strokeOpacity=0.001
import altair as alt
import pandas as pd
df = pd.DataFrame(dict(x=["a", "b"], y=[1, 1000]))
select = alt.selection(type="single", fields=["x"], empty="none")
alt.Chart(df).mark_bar(strokeWidth=5, stroke="red", strokeOpacity=0.001).encode(
y="x",
x="y",
fill=alt.condition(select, alt.value("red"), alt.value("blue")),
).add_selection(select).interactive()
在试图解释数据时,这似乎会产生误导。增加可单击区域的大小而不是增加条的大小是否更有意义?或者,当差距达到某个阈值时,你可以切换到对数刻度。是的,这也是我所想的。这两者之间会产生不和谐,但我想我总是可以生成两者,并可以引用在给定时间更容易使用的任何一个。谢谢你的建议。