Autor Zpráva
PetraPP
Profil
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
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
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
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
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0