如何在 Python 中为 Altair 的每个 y 轴标签应用边框

How to apply borders around each y axis label for Altair in Python

我有一个在 Altair 中制作的可视化效果,我想在 y 轴上的每个标签周围放置边框(抱歉,如果我解释不正确)以将它们分开。这是我目前的代码:

alt.Chart(q4df).transform_fold(
  rosspaints,
  as_=['column', 'value']
).mark_circle().encode(
  x = alt.X('column:N', axis=None),
  y = alt.Y('TITLE', title=None),
  size = alt.Size('value:Q', legend=None),
  color=alt.Color('column:N', legend=None,
                   scale=alt.Scale(
            domain=['alizarin crimson','bright red','burnt umber','cadmium yellow','dark sienna', 
              'indian yellow','indian red','liquid black','liquid clear','black gesso',
              'midnight black','phthalo blue','phthalo green','prussian blue','sap green',
              'titanium white','van dyke brown','yellow ochre'],
            range=['#94261f','#c06341','#614f4b','#f8ed57','#5c2f08','#e6ba25','#cd5c5c',
                '#000000','#ffffff','#000000','#36373c','#2a64ad','#215c2c','#325fa3',
                '#364e00','#f9f7eb','#2d1a0c','#b28426']))

  
    
).properties(
    width=400,
    height=700
    
).configure_axis(grid=False, labelFontWeight= 'bold', labelColor='black')

这是我当前的输出:

这是我想要的输出:

您可以像这样为每个 y 轴刻度设置网格线:

import altair as alt
from vega_datasets import data


source = data.barley()

alt.Chart(source).mark_point().encode(
    alt.X('yield:Q', axis=alt.Axis(grid=False)),
    alt.Y('variety:N', axis=alt.Axis(grid=True)),
    color='year:N'
).configure_view(
    stroke=None
)

或者在解析 y 尺度时根据您在 y 轴上编码的相同变量使用分面,以便在每个图中仅显示带有数据点的 y 轴条目:

alt.Chart(source).mark_point().encode(
    alt.X('yield:Q', axis=alt.Axis(grid=False)),
    alt.Y('variety:N', title=''),
    color='year:N',
).facet(
    row=alt.Facet('variety:N', title='', header=alt.Header(labels=False))
).resolve_scale(
    y='independent'
)