Чтение данных из файла Json и сохранение диаграммы в html с помощью Altair

Я использую Altair на ноутбуке Jupyter, где я пытаюсь преобразовать кадр данных Pandas в файл JSON, прежде чем передать его на диаграмму Altair. Я хотел бы сохранить окончательный график в виде HTML-файла.

import altair as alt
alt.renderers.enable('notebook')
alt.data_transformers.enable('json')
from vega_datasets import data

url = 'data.json'
cars = data.cars()
cars.to_json(url, orient='records')

charts1=alt.Chart(url).mark_circle(size=60).encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='Cylinders:O',
tooltip=['Name:Q', 'Origin:N', 'Horsepower:Q', 'Miles_per_Gallon:Q']
).interactive()

charts1.save('cars1.html')


charts2=alt.Chart(cars).mark_circle(size=60).encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='Cylinders:O',
tooltip=['Name:Q', 'Origin:N', 'Horsepower:Q', 'Miles_per_Gallon:Q']
).interactive()

charts2.save('cars2.html')

charts1 | charts2

И диаграммы 1, и диаграммы 2 отображаются правильно в блокноте jupyter, но только cars2.html отображается правильно, когда я открываю его в своем браузере. cars1.html - это просто пустая белая коробка. Я неправильно понял синтаксис? Я нахожусь на python3.6, версия Altair: '2.2.2', Jupyter: '4.3.0'.

1 ответ

Решение

За chart1данные существуют в отдельном файле (data.json), и этот файл должен быть доступен браузеру, чтобы браузер отображал данные в диаграмме. Если файл данных недоступен (либо из-за неправильного URL-адреса, либо из-за проблемы с несколькими источниками), то результатом будет пустой график.

Чтобы определить, в чем проблема, откройте консоль javascript вашего браузера и проверьте, в чем заключается ошибка.

Например, если вы просматриваете свой график с file:// URL, данные могут быть недоступны, если ваш браузер имеет строгие перекрестные политики. Попробуйте просмотреть файл через локальный веб-сервер (вы можете использовать python -m http.server).

Другие вопросы по тегам