Autor | Zpráva | ||
---|---|---|---|
PetraPP Profil |
#1 · Zasláno: 7. 1. 2020, 16:05:33
Dobrý den,
používám grafy ChartJS a potřebuji nastavit grafu min a max hodnoty. Bohužel používám hned čtyři LINE a nemám tušení, jak vyčíst z těchto čtyř linií min a max hodnotu. Aktuálně používám, jenže to je min a max pro linii s daty ... data[0] min: Math.min.apply(this, data[0]['datasets']['data']), max: Math.max.apply(this, data[0]['datasets']['data']) Používám tam data pro linie: data[0]['datasets']['data'] data[1]['datasets']['data'] data[2]['datasets']['data'] data[3]['datasets']['data'] A z těchto potřebuji vypočítat min a max hodnotu, kterou potřebuji vložit do te min: a max: Poradíte prosím? |
||
Radek9 Profil |
PetraPP:
Pošleš sem nějakou strukturu těch dat? Je data[X].datasets.data jedno číslo? Je data pole? Jestli je na obě otázky odpověď ano, tak takhle:
min: Math.min(...data.map(item => item.datasets.data)), max: Math.max(...data.map(item => item.datasets.data)), Pro starší verzi JS takto: min: Math.min.apply(Math, data.map(function (item) { return item.datasets.data })), max: Math.max.apply(Math, data.map(function (item) { return item.datasets.data })) Pokud to takhle nefunguje, tak budu potřebovat lépe popsat tu strukturu. |
||
PetraPP Profil |
#3 · Zasláno: 9. 1. 2020, 10:10:35
data[0]['datasets']['data'] obsahuje více čísel (array) a je to jeden teploměr. Pro druhý teploměr je data[1]['datasets']['data'] atd.
Zkoušela jsem starší verzi JS scriptu, ta nefunguje a tu té první nevím, co mám místo těch tří teček doplnit. Dala jem tam Math, ale to taky nefunguje. Vůbec nemám páru, co bych tam měla dát a na internetu jsem vůbec nic nenašla, což je zvláštní, že tohle ještě někdo nepotřeboval do grafu jako já. Předem ještě jednou moc děkuji za výpomoc, moc si toho vážím, protože já s tím neudělám vůbec nic :/ Nesvedu to. |
||
Radek9 Profil |
PetraPP:
Jasně, rozumím. Struktura tedy vypadá zhruba takhle? (Ignoruju jakékoli další vlastnostni těch objektů, beru v potaz jen ty teploty.) var data = [ { datasets: { data: [1, 5, -7] } }, // záznam 0, teploty 1, 5, -7 { datasets: { data: [2, 3, 4] } }, // záznam 1, teploty 2, 3, 4 { datasets: { data: [-1, -5, 9] } }, // atd. { datasets: { data: [6, 12, 0] } } ] V tom případě to bude takhle (radši uvažuju starší verzi JS, novější syntaxe nemusí fungovat ve všech prohlížečích). // proměnná obsahující všechny teploty var temps = ( data .map(function (item) { return item.datasets.data }) // vezmeme jednotlivé sady teplot .reduce(function (res, arr) { return res.concat(arr) }) // sloučíme je do jednoho pole ) // tady jsou ty dva prvky nastavení toho grafu (min a max) var options = { min: Math.min.apply(Math, temps), max: Math.max.apply(Math, temps) } |
||
PetraPP Profil |
#5 · Zasláno: 9. 1. 2020, 11:58:20
Ještě nefunguje, ale to bude asi tím, že nevíte jak ty data tam dostávám. Tahám je z JSON a to takhle: pastebin.com/aVybfK5Q Máte tam plný script, který používám. Jsem hloupá, měla jsem začít tímhle a netajit jakýsi script, který stejně je nutné ukázat :( Omlouvám se a předem strašně moc děkuji, že Váš drahocený čas věnujete mojí osobě.
|
||
Kajman Profil |
#6 · Zasláno: 9. 1. 2020, 12:52:58
PetraPP:
A musíte ten min a max nastavovat? Většina js knihoven na grafy je automaticky určí právě dle dat, pokud nejsou nastaveny natvrdo. |
||
Radek9 Profil |
#7 · Zasláno: 9. 1. 2020, 15:08:47
PetraPP:
Jak poznamenal Kajman, je potřeba to nastavovat? Nefunguje to i bez toho? Pokud ne, tak poprosím ještě o ten soubor /data/grafy.json, bez něj to asi nerozklíčujeme. Ideální by bylo, kdybys byla schopná udělat živou ukázku. |
||
Časová prodleva: 4 roky
|
0