Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pchart - kilka wykresów XY
Forum PHP.pl > Forum > Gotowe rozwiązania
nospor
Hejka, używam pChart w wersji 1 i robię wykresy XY.
Dla jedego wykresu nie ma problemu:
  1. $DataSet->AddPoint(array(2,4,5,1),"Serie2");
  2. $DataSet->AddPoint(array(1,2,3,6),"Serie3");
  3.  
  4. $DataSet->AddSerie("Serie2");
  5. $DataSet->AddSerie("Serie3");
  6.  
  7. // Initialise the graph
  8. $Test = new pChart(700,290);
  9. //........
  10. $Test->drawXYScale($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie2","Serie3",213,217,221);
  11. $Test->drawGrid(4,TRUE,230,230,230,50);
  12. //....
  13. $Test->drawXYGraph($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie2","Serie3",0);
  14. $Test->drawLegend(175,35,$DataSet->GetDataDescription(),255,255,255);
  15. //....

Problem pojawia się gdy chcę dodać kolejne linie na tym samym wykresie

  1. $DataSet->AddPoint(array(2,4,5,1),"Serie2");
  2. $DataSet->AddPoint(array(1,2,3,6),"Serie3");
  3. $DataSet->AddPoint(array(1,2,3,40),"Serie4");
  4. $DataSet->AddPoint(array(1,2,4,50),"Serie5");
  5.  
  6. $DataSet->AddSerie("Serie2");
  7. $DataSet->AddSerie("Serie3");
  8. $DataSet->AddSerie("Serie4");
  9. $DataSet->AddSerie("Serie5");
  10.  
  11. $Test = new pChart(700,290);
  12. //!!!!PROBLEM
  13. $Test->drawXYScale($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie2","Serie3",213,217,221);
  14. $Test->drawGrid(4,TRUE,230,230,230,50);
  15. //!!!!PROBLEM
  16. $Test->drawXYGraph($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie2","Serie3",0);
  17. $Test->drawXYGraph($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie4","Serie5",0);
  18.  
  19. $Test->drawLegend(175,35,$DataSet->GetDataDescription(),255,255,255);


Pierwszy problem:
$Test->drawXYScale($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie2","Serie3",213,217,221);
Rysując skalę podaje się tylko serię dla pierwszej linii. Nie można w skali uwzględnić więcej niż jednej linii.

Drugi problem
$Test->drawXYGraph($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie4","Serie5",0);
To mi rysuje drugą linię, ale gdy jest poza skalą pierwszej linii to oczywiście będzie nie widoczna.
Dodatkowo rysuje mi w tym samym kolorze co pierwszą linię. Mogę od biedy ostatni parametr dać 1 - wówczas zmieni kolor, ale tu wchodzimy na teren trzeciego problemu

Trzeci problem
NIestety legenda nie uwzględnia linii jako całości. Linia składa się z dwóch serii. Dla jednej więc linii, pojawiają się dwa pisy w legendzie. Dla dwóch linii pojawiają się 4 wpisy w legedzie i oczywiście w żaden sposób nie powiązane z kolorami linii.

Jakieś rozwiązanie? Da się tu narysować więcej niż jedną linię XY?
markonix
  1. $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALL,150,150,150,TRUE,90,2);

Może o to chodzi?
Chodzi o to, aby na jednym wykresie umieścić 3 serie danych (3 różne kolory, 3 pozycje w legendzie)?
nospor
Tak, ale chodzi o wykresy typu XY.

drawScale stosuje się dla innych wykresów.

Cytat
Chodzi o to, aby na jednym wykresie umieścić 3 serie danych (3 różne kolory, 3 pozycje w legendzie)?

Nie do końca. Na jedną linie XY przypadają dwie serie danych. Jedna na osX a druga na osY.
Dla 3 linii potrzebne więc będzie 6 serii danych, ale 3 rożne kolory, 3 pozycje w legendzie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.