Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> grafika do sondy
invx
post
Post #1





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


jak generowac grafike w sondzie questionmark.gif mam taki pomysl: Jesli liczba jest wieksza niz dwucyfrowa dziele ja przez tyle o ile miejsc jest wiekasz np 10, i to co zostanie to takiej szerokosci wyswietlam grafike

P.S.
a jak bym chcial wykres kolowy, wiem ze mozna skorzystac z klas xgraph, (czy jakos tak) a jak by tak samemu smile.gif

Ten post edytował invx 29.06.2005, 21:12:02


--------------------
RCXcms
www.rcx.prv.pl
Pierwszy polski w pełni zintegrowany system portal
Go to the top of the page
+Quote Post
Wave
post
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


Nie lepiej obliczyć całkowitą liczbę głosów i na jej podstawie utworzyć procentowy wykres?? Kołowego do sondy nie polecam, bo to są ogromne klasy.
Go to the top of the page
+Quote Post
hwao
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Cytat(Wave @ 2005-07-02 17:23:23)
Nie lepiej obliczyć całkowitą liczbę głosów i na jej podstawie utworzyć procentowy wykres??

To jest najelspze rozwiazanie
Cytat
Kołowego do sondy nie polecam, bo to są ogromne klasy.

Nie koniecznie, mozna je wygenerowac np we flashu albo czym kolwiek innym. smile.gif (js)
Go to the top of the page
+Quote Post
Diwi
post
Post #4





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

Ostrzeżenie: (0%)
-----


A ja bym do wyświetlenia użył tego
Wykresy są bardzo ładne. Bardzo łatwo je zaimplementować do aplikacji.


Pozdrawiam
Go to the top of the page
+Quote Post
Kas
post
Post #5





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Najlepiej (tzn. najprościej) zrobić wykres słupkowy.
Sumujesz wszystkie głosy. Następnie dla każdej odpowiedzi ustalasz jej udział procentowy. Przyjmujesz, że 1 procent to np. 4 piksele i generujesz grafikę o odpowiedniej szerokości.

Może to zrobić tak...

  1. <?php
  2. $plik = fopen('wynik.txt', 'r');
  3. flock($plik, 1);
  4. fscanf($plik, &#092;"%dt%dt%d\", &$tak, &$nie, &$nie_wiem);
  5. flock($plik, 3);
  6. $suma = $tak + $nie + $nie_wiem;
  7. ?>
  8. Czy podoba Ci się ta strona?
  9. <br><br><br>
  10. <img src=\"./sonda/sonda_01.gif\" width=\"
  11. <?php
  12. printf(&#092;"%.0f\", $tak * 100 * 4 / $suma + 4);
  13. ?>
  14. px\" height=\"14px\">
  15. <br>
  16. Tak <div style=\"text-align: right;\"><?php echo round($tak * 100 / $suma); ?>%</div>
  17. <br>
  18. <img src=\"./sonda/sonda_02.gif\" width=\"
  19. <?php
  20. echo $nie * 100 * 4 / $suma + 4;
  21. ?>
  22. px\" height=\"14px\">
  23. <br>
  24. Nie <div style=\"text-align: right;\"><?php echo round($nie * 100 / $suma); ?>%</div>
  25. <br>
  26. <img src=\"./sonda/sonda_03.gif\" width=\"
  27. <?php
  28. echo $nie_wiem * 100 * 4 / $suma + 4;
  29. ?>
  30. px\" height=\"14px\">
  31. <br>
  32. Nie wiem <div style=\"text-align: right;\"><?php echo round($nie_wiem * 100 / $suma); ?>%</div>
  33. <br><br>
  34. <?php echo(&#092;"Oddano $suma głosów.\"); ?>


Ten post edytował Kas 2.07.2005, 21:00:28


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
id4
post
Post #6





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Witam

Cytat
Nie lepiej obliczyć całkowitą liczbę głosów i na jej podstawie utworzyć procentowy wykres??

Pozwolicie, że sie nie zgodzę?
Gdyby na podstawie wszystkich głosów obliczyć procentowy udział każdej z nich, to wykres będzie brzydki! Żadne z wyników nie dojdzie do końca osi współrzędnych (jeśli mogę to tak nazwać).

Załóżmy, że będą 2 słupli, razem 9 głosów. Jeden słupek ma 6, kolejny 3 głosy. No i głupia sytuacja, bo wykres jest przewidziany na 9 głosów, a max słupek ma 6! Tak nie może być.

Należy przyjąć, że największa ilość głosów to max wykresu. No i teraz obliczyć stosunek, czyli dla pierwszej wypowiedzi słupek wyniesie 100% (6 głosów), a dla drugiej 50% (3 głosy). Trzeba jeszcze obliczyć współczynnik (ważna rzecz).

Współczynnik to liczba która odpowiada za prawidłowe wyświetlanie. Załóżmy, że nasz max słupek ma 100px. Tak więc współczynnik będzie równy 100(px)/6(głosy)=16,67. Teraz możemy spokojnie i bez obaw obliczyć wysokość kolejnego słupka, tj. 16,67(współczynnik)*3(głosy)=50(px).

Moze to trochę zamieszałem, ale wg. mnie to najlepszy sposób na dobre, ładne i prawidłowe wyświetlenie danych z sondy czy statystyk. Uzyskujemy przez to peną kontrolę nad słupkami, bo w tym obliczeniach jedyną stałą wartością jest wysokość wykresu (założone 100px). Inne rzeczy są już liczone dynamicznie i zawsze wyświetlone są optymalnie do wysokości wykresu.

Zachęcam do testów i oczywiście radzę użyć takich funkcji jak round(), ceil() itp dla zaokrąglania wyników dla graficznych słupków do INT - bo jak przedstawić 0,5 px smile.gif

Sorki za elaborat - starałem się skrócić smile.gif

P.S: Przykład dla wcześniejszych wypowiedzi pokazałby, że biorąc pod uwagę np. 20 odpowiedzi, z łączną suma 100 głosów, to średnio max słupek dochodziłby do 1/5 max wysokości smile.gif
Go to the top of the page
+Quote Post
Kas
post
Post #7





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Można tak - wtedy wykres jest dużo ładniejszy i mniej miarodajny. tongue.gif
Jednym słowem... jak kto lubi.
Chociaż np. na www.onet.pl jest zrobione całkiem ładnie i punktem odniesienia jest suma wszystkich głosów. Oni dali tam takie "puste" słupki jako dopełnienie do 100%.

A co do php/SWF Charts to są bardzo ładne. Chyba sam tego użyję. smile.gif

Ten post edytował Kas 2.07.2005, 21:33:25


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
id4
post
Post #8





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Cytat(Kas @ 2005-07-02 21:31:40)
wtedy wykres jest dużo ładniejszy i mniej miarodajny.


Mniej miarodajny?questionmark.gif
Go to the top of the page
+Quote Post
Kas
post
Post #9





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Nie masz prówannia do 100%.
Wykres odnosi się do maksymalnej wartości.

Jak masz np. 5 głosów na tak i 10 głosów na nie to masz:
- 100% na nie
- 50% na tak.

A powinno być raczej :
- 66.(6)% na nie
- 33.(3)% na tak.

Chyba dobrze zrozumiałem Twój elaborat. tongue.gif
I wtedy suma procent głosów jest zawsze >= 100%. Poza tym różnica w punktach procentowych jest inna.

Ten post edytował Kas 2.07.2005, 21:47:06


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
id4
post
Post #10





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Cytat(Kas @ 2005-07-02 21:45:11)
Nie masz prówannia do 100%.
Wykres odnosi się do maksymalne wartości.

Jak masz np. 5 głosów na tak i 10 głosów na nie to masz:
- 100% na nie
- 50% na tak.

A powinno być raczej :
- 66.(6)% na nie
- 33.(3)% na tak.

Chyba dobrze zrozumiałem Twój elaborat.  tongue.gif

Ja pisałem o WYŚWIETLANIU a nie OPISYWANIU smile.gif
Opisać wykres możesz jak chcesz, czy to w % czy w ilości oddanych głosów smile.gif

Mnie głównie chodzi o to, że mój przykład jest na tyle dobry, że bez względu na ilość "słupków" zawsze pokazuje przedział w którym są głosy, od 0 do max ilości głosów - a ten inny sposób przy dużej ilości słupków będzie je pokazywał niedokładnie i brzydko, bo słupki będą bardzo niskie w stosunku do max wysokości wykresu.

P.S. Pytanie w wątku brzmiało o grafikę do sondy, więc raczej o Obliczenie Jak Obliczyć i Wyświetlić - więc opisałem smile.gif A jak zainteresowany to opisze (wykres), to inna rzecz smile.gif

Ten post edytował id4 2.07.2005, 21:52:31
Go to the top of the page
+Quote Post
Kas
post
Post #11





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Nie chcę się zbyt mądrzyć... smile.gif
Ale byłoby jednak super, gdyby rozmiar słupków miał związek z opisem oraz z ilością głosów.

A w opisywanym przypadku masz słupki o szerokości (wysokości):
- x px.
- 1/2 x px.

Powinno być:
- 0.(6)x px.
- 0.(3)x px

Gdzie x to maksymalna szerokość lub wysokość.

Chociaż na upartego można liczyć i od wartości maksymalnej.
Moim (nie) skromnym zdaniem to poprostu sprawa gustu.
A w wypadku bardzo dużej ilości słupków można dać inny przlicznik % -> piksele.

Swoją drogą nasza dyskusja jest mocno bezprzedmiotowa. Ja poprostu uważam, że normalizacja przy wykresie ma zwykle mały sens.
Efekt końcowy wyjdzie identyczny lub bardzo podobny - stosunek długości słupków będzie taki sam.

Ten post edytował Kas 2.07.2005, 22:11:33


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
id4
post
Post #12





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Cytat(Kas @ 2005-07-02 21:54:55)
Efekt końcowy wyjdzie identyczny lub bardzo podobny.


Znowu się nie zgodzę smile.gif
Zobacz na to: Kliknij.
Takiego efektu nie uzyskasz inaczej niż jak opisałem. Inaczej te słupki nie dojdą do końca - i nie ma tutaj nic wspólnego opisanie tego w prawidłowy sposób.

Faktem jest jednak, że każdy sposób pokaże prawidłowy stosunek - tylko przy dużej ilości i rodzajów głosów wysokość poszczególnch słupków będą niżesz, niż miejsce nad czy obok nich smile.gif

No i nie zgodze się z przelicznikiem % -> px.
Zazwyczaj miejsce na sobdę jest z góry określone, i nie da się na sztywno przydzielić ilości px, bo inaczej będzie wyglądał przelicznik dla 10, a inaczej dla 100 głosów na dany słupek smile.gif
Go to the top of the page
+Quote Post
Kas
post
Post #13





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Co jest lepsze... rewolwer czy pistolet?
Podobna dyskusja. smile.gif

Dla mnie zdecydowanie czytelniejszy jest wykres, gdzie punkt odniesienia to suma wszystkich wartości.
Ale przyznaję, że ten wygląda całkiem ładnie.

Ten post edytował Kas 2.07.2005, 22:18:40


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
id4
post
Post #14





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Jeśli znajdę trochę czasu jutro to napisze jakąś funkcję do wyświetlania wykresów dla obu przypadków - wtedy to już będzie tylko i wyłącznie kwestia gustu smile.gif
Go to the top of the page
+Quote Post
Kas
post
Post #15





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Do robienia takich wykresów liczonych od sumy mam gotowe.

  1. <?php
  2. $plik = fopen('wynik.txt', 'r');
  3. flock($plik, 1);
  4. fscanf($plik, &#092;"%dt%dt%d\", &$tak, &$nie, &$nie_wiem);
  5. flock($plik, 3);
  6. $suma = $tak + $nie + $nie_wiem;
  7. ?>
  8. Czy podoba Ci się ta strona?
  9. <br><br><br>
  10. <img src=\"./sonda/sonda_01.gif\" width=\"
  11. <?php
  12. printf(&#092;"%.0f\", $tak * 100 * 4 / $suma + 4);
  13. ?>
  14. px\" height=\"14px\">
  15. <br>
  16. Tak <div style=\"text-align: right;\"><?php echo round($tak * 100 / $suma); ?>%</div>
  17. <br>
  18. <img src=\"./sonda/sonda_02.gif\" width=\"
  19. <?php
  20. echo $nie * 100 * 4 / $suma + 4;
  21. ?>
  22. px\" height=\"14px\">
  23. <br>
  24. Nie <div style=\"text-align: right;\"><?php echo round($nie * 100 / $suma); ?>%</div>
  25. <br>
  26. <img src=\"./sonda/sonda_03.gif\" width=\"
  27. <?php
  28. echo $nie_wiem * 100 * 4 / $suma + 4;
  29. ?>
  30. px\" height=\"14px\">
  31. <br>
  32. Nie wiem <div style=\"text-align: right;\"><?php echo round($nie_wiem * 100 / $suma); ?>%</div>
  33. <br><br>
  34. <?php echo(&#092;"Oddano $suma głosów.\"); ?>


Plik wynik.txt

Kod
56    21    57


Mam też całą taką ankietę. Chętnie opublikuję, ale to nic szczególnie odkrywczego.
Nobla pewnie za to nie dostanę. A mogłoby być tak pięknie. biggrin.gif

P.S.
Wszysycy wiedzą, że pistolet jest lepszy. tongue.gif

Ten post edytował Kas 2.07.2005, 22:24:52


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
id4
post
Post #16





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


No i super smile.gif

Spróbuj teraz przetestować ten kod dla wartości:

Kod
3 52 482


A jak starczy Ci czasu to spróbuj go rozwinąć dla większej ilości danych, np:

Kod
3 52 482 53 274 351


Wtedy zrozumiesz, dlaczego staram się naprowadzić Cię na inny sposób wyświetlania (nie opisywania) smile.gif

P.S. Zauważ też, że w moim JPG jest rozpiętość liczb od 57 do 327.

EDIT

Zapomniałem o jednym! Umieść Twój kod w tabeli, np. 300px - bo teraz wynik prezentowany jest na całym ekranie - a sonda raczej jest w jakimś określonym miejscu smile.gif I ma określone wymiary smile.gif

Ten post edytował id4 2.07.2005, 22:37:33
Go to the top of the page
+Quote Post
Kas
post
Post #17





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Przy

Kod
3    52    482


lub

Kod
56    21    999


u mnie całość wygląda całkiem dobrze.
Poza tym procent jest liczony od opowiednio 527 oraz 1076.
W Twoim rozwiązaniu byłoby 482 i 999 - niewielka różnica.

Sonda jest umieszczona w tabeli o szerokości 600 pikseli (cellpadding="5"), więc może mieć maksymalnie 590 pikseli.

Co nie zmienia faktu, że przy normalizacji słupki byłby może trochę ładniejsze. smile.gif
Tak na marginesie to do sporej sondy to rozwiązanie jest bardzo sensowne.

Ten post edytował Kas 2.07.2005, 22:53:36


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
id4
post
Post #18





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Cytat(Kas @ 2005-07-02 22:39:37)
Co nie zmienia faktu, że przy normalizacji słupki byłby może trochę ładniejsze.  smile.gif

Przede wszystkim dochodziłyby (przynajmniej jeden) do końca wykresu, bardziej dokładnie rysując różnicę pomiędzy samymi odpowiedziami (a nie pomiędzy sumą odpowiedzi). No i takie nieładny fakt: masz 20 odpowiedzi w ankiecie i na każdą z odpowiedzi jest 10 głosów. jaki jest efekt? Jeśli Twoja tabela ma 600px, to każdy słupek ma 30px - mnie tylko i wyłącznie o to chodzi smile.gif

nie jestem grafikiem, ale może uda mi się to zobrazować smile.gif

Kod
TWOJA
|-----               |25%
|-----               |25%
|----                |20%
|------              |30%

MOJA
|----------------    |25%
|----------------    |25%
|------------        |20%
|--------------------|30%


Ato tylko 4 możliwości - dla 10 górny przykład będzie miał na prawdę tylko małe kawałeczki grafik - dla 20 nie wspomnę smile.gif
Go to the top of the page
+Quote Post
Kas
post
Post #19





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Już od dwana rozumiem o co Ci chodzi.
I podtrzymuję...

1) Wygląd to kwestia sporna. O gustach się nie dyskutuje.

2) Ja poprostu przyzwyczaiłem się do "mojego" typu wykresu (prawdopodobnie to źle).

Przyznaję, ze przy tak dużej ankiecie (i tak absurdalnym rozkładzie głosów) Twoje rozwiązań jest dużo ładniejsze.

Swoją drogą to prezentacji danych procentowych świetny może być wykres kołowy np. taki jak ten.


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
id4
post
Post #20





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Cytat(Kas @ 2005-07-02 23:03:51)
Swoją drogą to prezentacji danych procentowych świetny może być wykres kołowy np. taki jak ten.

Jak najbardziej - jak tylko są ku temu możliwości - powiedzmy to - zagospodarowania miejsca smile.gif W wykresach kołowych KONIECZNIE musi być zastosowane Twoje rozwiązanie smile.gif - czyli liczenie z sumy.

Kod
|-                   | 5%
|--                  |10%
|----                |20%
|--------            |40%
|---                 |15%
|--                  |10%


Jakkolwiek bym nie kombinował, rażą mnie te dziury na końcu wykresu smile.gif No ale to kwestia gustu smile.gif Wybór należy do zainteresowanych osób.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 20:24