我制作了一个带有链接的 Altair 分散图表。 它在我的 Jupyter Notebook 上完美运行。 当 Altair 处于 Streamlit 环境中时,就会出现问题。据我调查,我的带有 Altair 图表的应用程序由 iframe 显示。 链接目标无法在 iframe 中显示(服务器拒绝这些连接)。
当我按住 Ctrl 键并单击链接并在新选项卡中打开时,一切正常。 如何在此处默认打开新选项卡? 我看到这里讨论这个话题: https://github.com/altair-viz/altair/issues/1661 但我不知道如何使用其中包含的说明:-(
我应该如何更改我的图表规范?
我的图表代码:
import pandas as pd
import altair as alt
#Analyzed data is here:
URL='https://dl.dropboxusercontent.com/s/blk95gc1bf8errv/Car_Prices_Poland_BS4_1_0.csv'
tabela = pd.read_csv(URL)
tabela['calymodel'] = tabela['mark'] + ' ' + tabela['model']
calymodelunique = tabela['calymodel'].unique()
domyslny_model = calymodelunique.tolist().index('volkswagen passat')
auto = 'volkswagen passat'
auto_wiersze = tabela[tabela['calymodel']==auto]
marka_wybrana = auto.split()[0]
model_wybrany = auto.split()[1]
quant_cen = auto_wiersze['price'].quantile(q=0.99)
quant_mil = auto_wiersze['mileage'].quantile(q=0.99)
scattered = alt.Chart(auto_wiersze).mark_point().encode(
x=alt.X('price',scale=alt.Scale(domain=(0,quant_cen),clamp=True), title='Cena [zł]'),
y=alt.Y('mileage',scale=alt.Scale(domain=(0,quant_mil),clamp=True), title='Przebieg [km]'),
color=alt.Color('year', scale=alt.Scale(scheme='tableau10'),bin=alt.Bin(maxbins=6),legend=alt.Legend(title="Przedziały roczników")),
tooltip=[alt.Tooltip('year',title='Rocznik'),
alt.Tooltip('mileage',title='Przebieg'),
alt.Tooltip('price',title='Cena'),
alt.Tooltip('link',title='Link')],
href='link:N',
).properties(title="Porównanie ceny w zależności od rocznika i przebiegu",
height=600)
scattered
目前我使用 Ctrl+Click 来访问链接,但我认为这不是用户友好的选项。
我的应用程序可在此处获取: https://share.streamlit.io/napierajpl/streamlit/bs4/streamlit1.py
当您单击第一个图表上的链接时,您会发现它崩溃了:-( Otomoto.pl 服务器回复是:连接被拒绝
最佳答案
您可以按照链接问题中的说明手动更改usermeta
:
import altair as alt
from vega_datasets import data
from urllib.parse import urlencode
def make_google_query(name):
return "https://www.google.com/search?" + urlencode({'q': '"{0}"'.format(name)})
cars = data.cars()
cars['url'] = cars['Name'].apply(make_google_query)
chart = alt.Chart(cars).mark_circle(size=60).encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
href='url',
tooltip=['Name', 'url']
)
chart['usermeta'] = {
"embedOptions": {
'loader': {'target': '_blank'}
}
}
关于python - 如何在新选项卡中打开 Altair 图表中的 url (href),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72238350/