在不更改字体大小的情况下更改 altair 中的气泡大小

Change bubble size in altair without changing font size

我正在尝试创建 altair 气泡图。示例代码和示例数据框如下: 我想要基于 Market_cap 的气泡大小,并将公司名称放在旁边。问题是名称的字体大小也会根据气泡大小而变化。

如何创建气泡图,气泡大小不同但公司名称的字体大小相同

df = pd.DataFrame({ 'Company' : ['Apple', 'Microsoft', 'Meta', 'Nvidia'],
                   'Rev_perct' : [30, 50, 90, 10],
                  'Score' : [8, 5, 10, 4],
                  'Market_Cap' : [2000, 1000, 500, 800]
})

Graph_1 = alt.Chart(df).mark_circle(size = 100).encode( y = alt.Y('Rev_perct'), x = alt.X('Score'), 
                                                       color=alt.condition(
                                                       "datum.Rev_perct > 30"
                                                       "& datum.Score > 6",  
                                                        alt.value('red'),     
                                                       alt.value('green')          
                                                       ), size='Market_Cap')

Text_1 = Graph_1.mark_text( align='center',
   baseline='line-top', color = 'black', fontSize = 12, angle = 0,
   dy=10, dx= -5    
).encode(text='Company:O')

(Graph_1 + Text_1).properties(width = 800, height = 400)

这是我现在得到的结果图-

发生这种情况是因为您正在从指定尺寸编码的 mark_circle 图表构建 mark_text 图表,因此文本会继承它。在这种情况下,通过传递相应的空 Altair 编码 class (alt.Size()) 来更改创建绘图的顺序或取消设置大小编码:

Text_1 = Graph_1.mark_text(
    align='center',
    baseline='line-top',
    color='black',
    fontSize=12,
    angle=0,
    dy=10,
    dx= -5    
).encode(
    text='Company:O',
    size=alt.Size()
)