Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Altair中向行添加文本?_Python_Pandas_Altair - Fatal编程技术网

Python 如何在Altair中向行添加文本?

Python 如何在Altair中向行添加文本?,python,pandas,altair,Python,Pandas,Altair,我想向这些参考线添加文本,以下是我使用的代码: double2 = alt.Chart(source2).mark_line().transform_calculate( double2='5*pow(2,(datum.x/2))' ).transform_fold( ['double2'] ).encode( x='x:Q', y=alt.Y('value:Q', scale=alt.Scale(type='log')), color=alt.value

我想向这些参考线添加文本,以下是我使用的代码:

double2 = alt.Chart(source2).mark_line().transform_calculate(
    double2='5*pow(2,(datum.x/2))'
).transform_fold(
    ['double2']
).encode(
    x='x:Q',
    y=alt.Y('value:Q', scale=alt.Scale(type='log')),
    color=alt.value('lightgray')
)

source5 = alt.sequence(start=0, stop=28, step=1, as_='x')

double5 = alt.Chart(source5).mark_line().transform_calculate(
    double5='5*pow(2,(datum.x/5))'
).transform_fold(
    ['double5']
).encode(
    x='x:Q',
    y='value:Q',
    color=alt.value('lightgray')
)

double2 + double5

我想添加“死亡每2天翻一番”和“每5天翻一番”的文字,如下面数据中的世界图表所示:


没有任何好的自动化方法可以做到这一点,因为Vega Lite中的文本角度无法绑定到数据坐标。但只要稍加调整,您就可以通过文本层实现这一点:

import altair as alt

source2 = alt.sequence(start=0, stop=28, step=1, as_='x')

double2 = alt.Chart(source2).mark_line().transform_calculate(
    double2='5*pow(2,(datum.x/2))'
).transform_fold(
    ['double2']
).encode(
    x='x:Q',
    y=alt.Y('value:Q', scale=alt.Scale(type='log')),
    color=alt.value('lightgray')
)

source5 = alt.sequence(start=0, stop=28, step=1, as_='x')

double5 = alt.Chart(source5).mark_line().transform_calculate(
    double5='5*pow(2,(datum.x/5))'
).transform_fold(
    ['double5']
).encode(
    x='x:Q',
    y='value:Q',
    color=alt.value('lightgray')
)

text5 = alt.Chart({'values':[{'x': 20, 'y': 100}]}).mark_text(
    text='doubles every 5 days', angle=346
).encode(
    x='x:Q', y='y:Q'
)

text2 = alt.Chart({'values':[{'x': 20, 'y': 7000}]}).mark_text(
    text='doubles every 2 days', angle=327
).encode(
    x='x:Q', y='y:Q'
)

double2 + double5 + text2 + text5


一旦Altair 4.2支持新的数据编码,它将变得更干净。

非常感谢@jakevdp!!!总是要调整它,真是令人讨厌。但现在这是可行的,我希望当我更新图表时,我不需要做太多的调整。再次感谢!