在 amcharts 中为图例添加另一个字段以显示百分比
Add another field for legend in amcharts to show percentage
我正在使用 amcharts 在 codeigniter 中为一些细节创建一个饼图,我使用带有图例的饼图 (http://www.amcharts.com/demos/pie-chart-with-legend/) 并且我使用标题和值查看图例,就像在演示中一样。现在我想为图例添加另一个字段,显示每个字段的相关百分比。是否有任何关键字或方法可以做到这一点?我是编程新手。
这是我的代码..
$data['chartOne'] = $this->prepareJson($totalQuotations, "q");
$data['chartTwo'] = $this->prepareJson($totalContribution, "c");
<script type = "text/javascript">
var chart1 = AmCharts.makeChart( "salesReportPerformanceChartdiv",' . $data["chartOne"] . ');
var chart2 = AmCharts.makeChart( "salesReportContributionChartdiv",' . $data["chartTwo"] . ');
</script>';
public function prepareJson($data, $type) {
$chatData = [];
foreach ($data as $status) {
$stustotal = new \stdClass();
$stustotal->y = $status->count;
if ($type == "q") {
$stustotal->x = $status->status_name;
} else if ($type == "c") {
$stustotal->x = $status->user_name;
}
array_push($chatData, $stustotal);
}
$listeners = new \stdClass();
$listeners->method = addLegendLabel;
$listeners->event = "drawn";
$export = new \stdClass();
$export->enabled = true;
$legend = new \stdClass();
$legend->position = "right";
$legend->markerType = "circle";
$legend->autoMargins = true;
$feOffset = new \stdClass();
$feOffset->result = "offOut";
$feOffset->in = "SourceAlpha";
$feOffset->dx = 0;
$feOffset->dy = 0;
$feGaussianBlur = new \stdClass();
$feGaussianBlur->result = "blurOut";
$feGaussianBlur->in = "offOut";
$feGaussianBlur->stdDeviation = 5;
$feBlend = new \stdClass();
$feBlend->in = "SourceGraphic";
$feBlend->in2 = "blurOut";
$feBlend->mode = "normal";
$filter = new \stdClass();
$filter->id = "shadow";
$filter->width = "200%";
$filter->height = "200%";
$filter->feOffset = $feOffset;
$filter->feGaussianBlur = $feGaussianBlur;
$filter->feBlend = $feBlend;
$defs = new \stdClass();
$defs->filter = $filter;
$chart = new \stdClass();
$chart->type = "pie";
$chart->startDuration = 0;
$chart->theme = "light";
$chart->addClassNames = true;
$chart->legend = $legend;
$chart->innerRadius = "85%";
$chart->defs = $defs;
$chart->dataProvider = (array)$chatData;
$chart->valueField = "y";
$chart->titleField = "x";
$chart->labelRadius = 5;
$chart->radius = "42%";
$chart->labelText = "";
$chart->listeners = $listeners;
$chart->export = $export;
$chartJSON = json_encode($chart);
return $chartJSON;
}
您可以自定义图例的 valueText
to include the percents by adding the [[percents]]
shortcode to the string. By default, it is set to "[[value]]"
. In your case, it looks like you have to set it through your $legend
variable. You might also want to set the valueWidth
以适应更长的值字符串,如下所示:
$legend->valueText = "[[value]] [[percents]]%"; //customize as needed
$legend->valueWidth = 100; //adjust as needed so it doesn't overlap
我正在使用 amcharts 在 codeigniter 中为一些细节创建一个饼图,我使用带有图例的饼图 (http://www.amcharts.com/demos/pie-chart-with-legend/) 并且我使用标题和值查看图例,就像在演示中一样。现在我想为图例添加另一个字段,显示每个字段的相关百分比。是否有任何关键字或方法可以做到这一点?我是编程新手。 这是我的代码..
$data['chartOne'] = $this->prepareJson($totalQuotations, "q");
$data['chartTwo'] = $this->prepareJson($totalContribution, "c");
<script type = "text/javascript">
var chart1 = AmCharts.makeChart( "salesReportPerformanceChartdiv",' . $data["chartOne"] . ');
var chart2 = AmCharts.makeChart( "salesReportContributionChartdiv",' . $data["chartTwo"] . ');
</script>';
public function prepareJson($data, $type) {
$chatData = [];
foreach ($data as $status) {
$stustotal = new \stdClass();
$stustotal->y = $status->count;
if ($type == "q") {
$stustotal->x = $status->status_name;
} else if ($type == "c") {
$stustotal->x = $status->user_name;
}
array_push($chatData, $stustotal);
}
$listeners = new \stdClass();
$listeners->method = addLegendLabel;
$listeners->event = "drawn";
$export = new \stdClass();
$export->enabled = true;
$legend = new \stdClass();
$legend->position = "right";
$legend->markerType = "circle";
$legend->autoMargins = true;
$feOffset = new \stdClass();
$feOffset->result = "offOut";
$feOffset->in = "SourceAlpha";
$feOffset->dx = 0;
$feOffset->dy = 0;
$feGaussianBlur = new \stdClass();
$feGaussianBlur->result = "blurOut";
$feGaussianBlur->in = "offOut";
$feGaussianBlur->stdDeviation = 5;
$feBlend = new \stdClass();
$feBlend->in = "SourceGraphic";
$feBlend->in2 = "blurOut";
$feBlend->mode = "normal";
$filter = new \stdClass();
$filter->id = "shadow";
$filter->width = "200%";
$filter->height = "200%";
$filter->feOffset = $feOffset;
$filter->feGaussianBlur = $feGaussianBlur;
$filter->feBlend = $feBlend;
$defs = new \stdClass();
$defs->filter = $filter;
$chart = new \stdClass();
$chart->type = "pie";
$chart->startDuration = 0;
$chart->theme = "light";
$chart->addClassNames = true;
$chart->legend = $legend;
$chart->innerRadius = "85%";
$chart->defs = $defs;
$chart->dataProvider = (array)$chatData;
$chart->valueField = "y";
$chart->titleField = "x";
$chart->labelRadius = 5;
$chart->radius = "42%";
$chart->labelText = "";
$chart->listeners = $listeners;
$chart->export = $export;
$chartJSON = json_encode($chart);
return $chartJSON;
}
您可以自定义图例的 valueText
to include the percents by adding the [[percents]]
shortcode to the string. By default, it is set to "[[value]]"
. In your case, it looks like you have to set it through your $legend
variable. You might also want to set the valueWidth
以适应更长的值字符串,如下所示:
$legend->valueText = "[[value]] [[percents]]%"; //customize as needed
$legend->valueWidth = 100; //adjust as needed so it doesn't overlap