在不更改字体大小的情况下更改 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()
)
我正在尝试创建 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()
)