1 つの画像で 2 つのグラフをレンダリングする必要があります。1stは商品価格(棒グラフ)、2ndは価格帯となります。私がやりたいのは、それらの範囲の領域をレンダリングし、その上に製品の実際の価格をレンダリングすることです。これにより、製品が第 1 レベルの範囲内にあるかどうかを確認できます。
元。:
Ranges:
1st price level: 100-300
2nd price level: 400-700
3rd price level: 900-1500
Product prices:
Product A: 70
Product B: 170
Product C: 250
Product D: 570
Product E: 1270
Product F: 1800
これで、グラフは価格の通常の棒グラフだけでなく、3 つの水平領域 (または 3 つの異なる背景) も表示するはずです。A は、どの製品が問題なく、どの製品に異常な価格が設定されているか (Product F
高すぎるなど)を確認できる必要があります。
PHPGraphLibを試しましたが、適切な解決策が見つかりませんでした。最も近い結果は、例 6に似ていました。ここでは、6 つのゴール ライン (from-to の組み合わせ) を設定しましたが、あまり明確ではなく、確認するのが困難です。
今、私はPHPlotでこれを解決しようとしています.1つの画像で2つのグラフを結合することができました-製品の棒グラフと価格レベルの面グラフですが、それは最も簡単で正しい解決策ではないようです. これらのライブラリでこれを行う方法はありますか?
編集:
PHPGraphLib コード:
$graph = new PHPGraphLib(500, 350);
$data = array();
// product prices
$data['prod_a'] = 70;
$data['prod_b'] = 170;
$data['prod_c'] = 250;
$data['prod_d'] = 570;
$data['prod_e'] = 1270;
$data['prod_f'] = 1800;
$graph->addData($data);
$graph->setBarColor('#cccccc');
$graph->setDataValues(true);
$graph->setLegend(true);
$graph->setLegendTitle('OKPC');
// price levels
$graph->setGoalLine(100, "#ff0000", "dashed");
$graph->setGoalLine(300, "#ff0000", "solid");
$graph->setGoalLine(400, "#00ff00", "dashed");
$graph->setGoalLine(700, "#00ff00", "solid");
$graph->setGoalLine(900, "#0000ff", "dashed");
$graph->setGoalLine(1500, "#0000ff", "solid");
$graph->createGraph();
PHPlot コード:
// product prices
$data1 = array(
array('prod_a', 100, 300, 400, 700, 900, 1500),
array('prod_b', 100, 300, 400, 700, 900, 1500),
array('prod_c', 100, 300, 400, 700, 900, 1500),
array('prod_d', 100, 300, 400, 700, 900, 1500),
array('prod_e', 100, 300, 400, 700, 900, 1500),
array('prod_f', 100, 300, 400, 700, 900, 1500),
);
// price levels
$data2 = array(
array('prod_a', 70),
array('prod_b', 170),
array('prod_c', 250),
array('prod_d', 570),
array('prod_e', 1270),
array('prod_f', 1800),
);
$plot = new PHPlot(800, 600);
$plot->SetImageBorderType('plain');
$plot->SetPrintImage(False);
// Plot 1
$plot->SetDrawPlotAreaBackground(True);
$plot->SetPlotType('area');
$plot->SetDataType('text-data');
$plot->SetDataValues($data1);
$plot->SetPlotAreaWorld(NULL, 0, NULL, 3000);
$plot->SetXTickLabelPos('none');
$plot->SetXTickPos('none');
$plot->SetYLabelType('data', 0);
$plot->DrawGraph();
// Plot 2
$plot->SetDrawPlotAreaBackground(False);
$plot->SetDrawYGrid(False);
$plot->SetPlotType('linepoints');
$plot->SetDataValues($data2);
$plot->SetYTickPos('plotright');
$plot->SetYTickLabelPos('plotright');
$plot->SetDataColors('black');
$plot->DrawGraph();
$plot->PrintImage();