Ваш вариант будет работать, если вы импортируете сценарии непосредственно в ваш index.html или ваш конкретный HTML-код следует.
<script src="https://cdn.jsdelivr.net/npm/vega@5.4.0/build/vega.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-lite@3.3.0/build/vega-lite.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-embed@4.2.0/build/vega-embed.js"></script>
Согласно документации в https://github.com/vega/vega-embed/blob/v4.0.0/README.md версия npm предоставляет другой метод, а именно embed
.проверьте раздел Справочника API в README.
вы можете попробовать что-то вроде
embed('#vis', yourVlSpec)
Обратите внимание, что аргумент спецификации рассматривает строковые аргументы как URL, который долженвернуть JSON.поэтому, если ваша спецификация - строка, было бы хорошо сделать JSON.parse(yourSpec)
перед вызовом функции embed
.
Вот как я это сделал в своем угловом проекте.Примечание. Ниже приведен конкретный пример с использованием машинописного текста ..: D
- Сначала импортируйте функцию внедрения из ваших узлов node_modules.
import {default as embed} from 'vega-embed
; - Затем в функции внутри моего компонента я вызвал метод
embed
. - В моем случае это был ngOnInit, который вызывается во время инициализации компонента.
ngOnInit() {
// option 1: using a string spec.
let spec = `{
"$schema": "https://vega.github.io/schema/vega-lite/v3.json",
"description": "Simple bar chart",
"data": {
"values": [
{"x": "A", "y": 28}, {"x": "y", "B": 55}, {"x": "C", "y": 43},
{"x": "D", "y": 91}, {"x": "E", "y": 81}, {"x": "F", "y": 53},
{"x": "G", "y": 19}, {"x": "H", "y": 87}, {"x": "I", "y": 52}
]
},
"mark": "bar",
"encoding": {
"x": {"field": "x", "type": "ordinal"},
"y": {"field": "y", "type": "quantitative"}
}
}`;
embed("#vis", "/assets/data/spec2.json", { actions: false }).catch(error =>
console.log(error)
);
// option 2: where the spec is saved as a json file in my project assets.
embed("#vis2", JSON.parse(spec), { actions: false }).catch(error =>
console.log(error)
);
}