Verkon visualisointi

Kuinka voisi automaattisesti visualisoida verkkoa, jossa on painotetut edget (kaaret, miksi niitä nyt kutsutaankaan). Ja solmut voivat olla myös painotetut. Tietysti sitä miten suurena solmut ja leveinä kaaret piirretään voi käytää, mutta entäs kuinka solmujen sijainnit?

Ajattelisin vähän jotain samaan tyyliin kuin tässä videossa:

https://youtu.be/YskU_gJpc0c?t=592

Siinä on täysi verkko ja kaikki saman painoista niin tuo toimii, mutta entä kun verkko on mielivaltainen. Jos siinä tuollaista jousi-tyyppistä ratkaisua käyttää, niin kuinka jousien lepopituudet päätetään?

Joskus olen nähnyt sellaistakin, että solmujen sijaintien x- ja y-komponentit otettaisiin verkon Laplacen matriisin ominaisvektorien (toinen ominaisarvohan taitaa kertoa bipartisuudesta, joten sitä vastaava ominaisvektori antaa hyviä sijainteja?), mites tämä toimisi?

17

145

    Vastaukset 17

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Turbo-Urpo1
      • Hubba

        M-Kar aina yhtä vittumainen vaihkei osaa koodata eikä ede käyttää windowsia tai ubuntua.
        abaajan jutu ilmeisesti 3D grafiikka piirin tai jos oikeesta verkon kuvastamisesta puhutaan HP:n tai Lenovon softat. jotka tekee tuon automaatisesti verkosta.
        Videohan avaajalla on pelle! verkot ei ole tuollaisia.


      • soita112

        Tolla trollilla on joku pätemisesn tarve ja joku vitun sertifikaatti tarve. Omakehun tarve!
        Hae apua ajoissa!


      • Täyttä-Factaa

        Windowsin kanssa on ongelmissa jatkuvasti, kannattaa kiertää kaukaa, vaikka tämä sitä kovasti kehuukin kiusatakseen linux käyttäjiä. Näillä windows käyttäjillä on ihmeellinen kiusan teko tarve koko ajan.


    • Jos tehdään sykli, koodilla

      var testN = 20
      var mat = new Array(testN).fill(null).map((_,i)=>new Array(testN).fill(null).map((_,j)=>{
      if (i===j) return testN-1;
      return Math.abs(i-j)===1?1:0;
      }));
      mat[0][testN-1] = mat[testN-1][0] = 1;

      ja käytetään x-coord: 5 ja y-coord: 7, niin saadaan syklistä sydän: https://aijaa.com/Z65dCm

      muillakin arvoilla saadaan hienoja symmetrisiä kuvioita, erityisesti tuo x-coord: 5 näyttäisi olevan hyvä.

      • Hubba

        Ai tollaista, no eikös toi menis ihan graafisesti helpommin 3d piirtouhjelmilla.

        Jotenkin tuli mieleen että Minkkilaukku = Turbo-Urpo1, Kun turbo oli heti kanssa koodaamassa.


      • Hubba kirjoitti:

        Ai tollaista, no eikös toi menis ihan graafisesti helpommin 3d piirtouhjelmilla.

        Jotenkin tuli mieleen että Minkkilaukku = Turbo-Urpo1, Kun turbo oli heti kanssa koodaamassa.

        Mitä piirto-ohjelmia tarkoitat?


      • Hubba

        Vaihka kaikken tuntema Blender



    • Pitihän se arvata, että viesti, jossa oli koodia poistuu, no nyt sitä ei enää tarvitakaan, sillä löysin JS-kirjaston nimeltä numerical.js, josta löytyy funktio eig. Refactoroin koodia vähän muutenkin. Osoitteesta https://codepen.io/minkkilaukku/full/aPPvOp löytyy jos haluatte kokeilla. Siinä on valmiiksi joku verkko, mutta ylhäältä voi syöttää oman datan JSON:ina muodossa

      {"labels": ["A", "B", "C", "D"],
      "mat": [[2, 3, 1, 0], [3, 1, 0, 5], [1, 0, 6, 2], [0, 5, 2, 2]]}

      tai sitten voi valita verkon: ketju, sykli, täysi tai satunnainen. Valitse koko (kuinka monta solmua ja satunnaiselle todennäköisyys, jolla kukin kaari otetaan mukaan ja paina Set-nappia.

      Siellä on myös nappi, joka asettaa solmut ympyrään. Aika kivan, hieman jopa hypnoottisen kuvion saa, kun tekee isohkon täyden graafin ja laittaa sen ympyrään. Ai niin, pitäisi vielä laittaa liukuvalitsin sille kuinka paksuna kaaret piirretään, mutta jos otatte koodin itsellenne, niin se onnistuu syöttämällä

      g.setEdgeWBounds(0, 2);

      missä parametrin arvot siis ovat pienin ja suurin paksuus kaarelle, voitte myös kokeilla

      g.edgeAlpha = 0.3;

      • Vielä varoituksen sananen: jos kovin suuren verkon laitatte, niin se saattaa kestää, koska siinä lasketaan nxn-kokoisen matriisin ominaisvektorit. Kun kokeilin isohkolla datalla (n=379), niin piti kyllä keskeyttää ennen kuin kuin kone sauhuaa. En tiedä, saattaa tietysti tehokkaammalla koneella onnistuakin. Eipä kyllä ainakaan siitä datasta, sitten kun pienemmällä otoksella siitä kokeilin, niin mitään kovin hienoja asetteluja oikein löytynyt, jotka olisivat jotain alla olevia struktuureja paljastaneet, löytynyt.


    • Kokeilin artikkelissa http://yifanhu.net/PUB/graph_draw_small.pdf kuvailtua algoritmia (minun versioni löytyy CodePen-linkistä funktiosta Graph.prototype.forceDirect). Kokeilemalla asetin parametrien arvoja ja kyllä se nyt melko järkevästi verkkoja asettelee. Mutta miksi se minulla vaatii niin monta iteraatiota ennen kuin se verkko asettuu hyvin (kokeilkaa vaikka "grid"-verkolla, se vie monta tuhatta iteraatiota, ennenkuin verkko "selviää", niin siellä on nyt uutuutena "grid" ja "torus" -verkot, ja ruksikaa pois se "calculate eigen" vasemmasta ylälaidasta, jos ison verkon teette).

      Johtuuko se parametrien arvoista?

      Ja linkkihän oli (taisi jo tuolla jossain viestissä ollakin):
      https://codepen.io/minkkilaukku/full/aPPvOp

      Siellä alapuolella jossain on se "Lay with force direct"-nappi ja siinä vieressä iteraatiomäärä-säädin.

    • Uutena ominaisuutena "Random Planar"-verkko. Nyt jopa lisätty sinne drop-valikkoon (viime kerralla unohtu, grid ja torus lisätä).

      Tuostahan saa hauskan pikkupelin, kun tekee satunnaisen verkon ja sitten yrittää manuaalisesti selvitää sen siten että mitkään viivat eivät mene päällekäin. Solmujen määrää ja kaaren todennäköisyyttä vaihtelemalla voi säätää vaikeustasoa. (Todennäköisyys tarkoittaa sitä kuinka suurella kukin kaari verkon kolmioinnista otetaan mukaan.)

      • Hubba

        Hienohan toi luomuksesi on mutta eihän tuolla ole mitään tekemistä oikean tietotekniikka verkon kanssa.


      • Hubba kirjoitti:

        Hienohan toi luomuksesi on mutta eihän tuolla ole mitään tekemistä oikean tietotekniikka verkon kanssa.

        Ai, mikäs se oikea tietotekniikka verkko on?

        Minä tarkoitan verkolla sellaista, missä on solmuja ja näiden välillä viivoja. Ja kumpiinkin voi liittyä lukuarvo: paino.


      • Hubba
        minkkilaukku kirjoitti:

        Ai, mikäs se oikea tietotekniikka verkko on?

        Minä tarkoitan verkolla sellaista, missä on solmuja ja näiden välillä viivoja. Ja kumpiinkin voi liittyä lukuarvo: paino.

        No jos puhutaan jostain esitysgrafiikasta niin olin väärässä.
        Mitä itse olen tehnyt ja nähnyt, mikä perusteella voi rakentaa verkon, sen hallinat ja asetukset sisältyy mukaan kaavioon, tosin jossan kotona ne vetästään hatusta, Isommissa niiden suunittelu samalla verkon rakenteen mukana on ihan edellytys.


    Ketjusta on poistettu 1 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Huomenta

      Sinulle! Olen miettinyt sinua paljon yön aikana. 🫂
      Ikävä
      65
      958
    2. Mitä ihmettä pitäisi tapahtua

      Että me kohdataan ja saadaan tämä tilanne etenemään?
      Ikävä
      69
      712
    3. Jos mies naisen prinsessakohtelu

      on sinulle liikaa, älä valitse prinsessaa 🦋🧚🏼‍♀️👸🏼
      Ikävä
      133
      646
    4. Miksi meille jäi

      Niin huonot välit vaikka meistä kumpikaan ei ole tunteilleen mitään voinut. Ehkä se kohtalo on sitä mieltä ettei kuitenk
      Ikävä
      37
      625
    5. Olen kironnut sinut alimpaan helvettiin

      Hyvää matkaa.
      Ikävä
      69
      586
    6. Viesti sinulle

      Tiedät että tunteet ja ajatukset ja meillä on vahva yhteys mistä molemmat tiedetään. Odotan sinua ☀️
      Ikävä
      33
      582
    7. Ikävö sinua nainen!

      Rakastan sua! ❤️💛❤️💜🧡🧡💚🤎:💜💜❤️
      Ikävä
      43
      559
    8. SAHIMÄKI LOPETA

      Miksi käyt Tupamäen Pekan kimppuun.?? Hänen asia mitä hän tekee tiloillaan. Oletko omista POTKUISTASI yhä katkera turve
      Ähtäri
      43
      551
    9. Rakas, rakkaampi, rakkain

      Olen tullut siihen johtopäätökseen, ettei minun kannata rakastaa. Kaikki joita olen koskaan rakastanut vain kohtelevat m
      Sinkut
      112
      515
    10. Haluan purkaa vielä tuntemuksia

      Tykkään sinusta kovin paljon❤️ olen surullinen tilanteestasi ja siitä mitä me olemme yhdessä joutuneet kokemaan. Tämä ei
      Ikävä
      19
      490
    11. Tunteiden käsittely kertoo ihmisestä.

      Kun puhutaan "tavallisesta" ihmisestä, joka on suht tasapainoinen eläjä, niin puhutaan oikeastaan taitavasta tunteiden k
      Sinkut
      172
      474
    12. Ketä ajattelen

      kun mietin, mitä sinulle kuuluu? En tunne sinua oikeasti, ja se on ehkä hyvä, koska jos tietäisin enemmän, se varmaan v
      Ikävä
      18
      451
    13. Pilkettä sunnuntain silmässä

      😉 Jos tästä ketjusta löytyisi yksi ihminen, joka saisi sut hymyilemään tänään… Millainen hän olisi? Ei tarvitse kerto
      Sinkut
      62
      386
    14. Jos olet aidosti jostakin

      kiinnostunut, niin yrität myös lähestyä irl. 😁
      Ikävä
      52
      369
    15. Kyllä tiedän sun

      Likaiset pelit selän takana
      Ikävä
      42
      368
    16. Tiedätkö kun on

      Ikävä sinua melko usein.
      Ikävä
      17
      362
    17. Mitä sinulle on tapahtunut lapsena

      Kun olet noin sairas päästäsi? Pikkupojalle ( Miehen kehossa)
      Ikävä
      29
      354
    18. Työttömän miehen ihmisarvo

      ..parisuhdemarkkinoilla on olematon. Työtön mies on naisille ihmisjätettä, varsinkin jos sattuu olemaan vielä kunnolline
      Sinkut
      96
      343
    19. YLINEN pilaa Ähtärin mahdollisuudet.

      Vuodeosastopäätös jossa Nina Ylinen (sdp) äänesti niiden lopettamisen puolesta, hoitajille potkut ja silti arviointimene
      Ähtäri
      22
      338
    20. Kuhmolaiset valittaa kaikesta

      Ootte te kyllä yksiä sanonko mitä... Kaikesta uudesta ja kaupunkia kehittävästå löytyy aina muutama vinkuja kun ei mene
      Kuhmo
      9
      338
    Aihe