我正在尝试将下面以seaborn构造的图形复制到altair。我可以在其中标记某些点,即群集中的预测点。
altair中的图层功能似乎是方向。
替代示例
import altair as alt
import pandas as pd
source = pd.DataFrame({
'x': [1, 3, 5, 7, 9],
'y': [1, 3, 5, 7, 9],
'label': ['A', 'B', 'C', 'D', 'E']
})
bars = alt.Chart(source).mark_point().encode(
x='x:Q',
y='y:Q'
)
text = bars.mark_text(
align='left',
baseline='middle',
dx=7
).encode(
text='label'
)
bars + text
但是我不能只选择一些要在中间用黑点标记的点。
谢谢
答案 0 :(得分:1)
这可以通过对包含要显示的数据的两个图表进行分层来完成。这是一个包含scikit-learn生成的一些数据的示例,因为您没有提供任何示例数据:
import altair as alt
import pandas as pd
from sklearn.datasets import make_blobs
X, labels = make_blobs(20, random_state=1)
points = pd.DataFrame({
'x': X[:, 0],
'y': X[:, 1],
'labels': labels
})
centers = points.groupby('labels').mean()
data = pd.concat([points , centers.reset_index()])
chart1 = alt.Chart(data).mark_point(filled=True, size=150).encode(
x='x',
y='y',
color='labels:N'
)
chart2 = alt.Chart(centers).mark_point(filled=True, size=50).encode(
x='x',
y='y',
color=alt.value('black')
)
chart1 + chart2