gpt4 book ai didi

php - PChart线性图表图像质量

转载 作者:IT王子 更新时间:2023-10-28 23:55:22 25 4
gpt4 key购买 nike

我正在使用 PChart 创建线性图表。除了实际绘制的线条的质量之外,一切都很顺利。

当然,抗锯齿没有关闭,甚至明确地打开了。

这是实际图像的示例,所有这些步骤看起来都非常难看。

enter image description here

有没有办法让画出的线条更流畅,不踩踏?

使用的代码:

public function linearTwoAxis($data, $fileName, $startColor = 0)
{
$pData = new \pData();

$i = 0;
foreach ($data as $key => $row)
{
$serie = $this->translator->trans("pages.reportDefault.$key");
$pData->addPoints($row, $serie);
$pData->setSerieOnAxis($serie, $i);
$pData->setSerieWeight($serie, 1);
$pData->setAxisName($i, $serie);
$pData->setPalette($serie, $this->colors[$startColor++]);
$pData->setAxisDisplay($i, AXIS_FORMAT_METRIC);
$i++;
}
$monthNames = array_keys($row);

$pData->setAxisPosition(1, AXIS_POSITION_RIGHT);
$pData->addPoints($monthNames, "Labels");
$pData->setAbscissa("Labels");

$pChart = new \pImage(750, 200, $pData);

$pChart->setFontProperties(array(
"FontName" => $this->fonts_dir . "arial.ttf",
"FontSize" => 8)
);

$pChart->setGraphArea(50, 10, 700, 150);
$pChart->Antialias = TRUE;
$pChart->drawScale(["Mode" => SCALE_MODE_START0]);
$pChart->drawLineChart();
$pChart->drawLegend(325,180,array("Style"=>LEGEND_BOX,"Mode"=>LEGEND_HORIZONTAL, "BoxWidth"=>30,"Family"=>LEGEND_FAMILY_LINE,"Alpha" => 0));

$pChart->render($this->target_dir . $fileName);

return $this->target_dirname . $fileName;
}

最佳答案

如果没有其他方法可以帮助将图表绘制得更大,然后使用 ImageMagick 缩小生成的图像。这是最后的解决方案,具有明显的额外计算成本。

这是一个示例行:

convert chart.png -resize 750×200 chart.jpg

如果原始图像是原来的两倍大(通过简单地将代码中的两个维度加倍),这样的调整大小会将四个像素折叠成一个像素,平滑五个级别(0%、25%、50%、 75%、100%)。如果您将图像绘制得更大,您可能会在绘制线条时关闭抗锯齿功能,因为无论如何调整大小都会平滑所有内容。

字体和可读性可能会成为问题,所以也许你想绘制两张图片:

  • 只是规模更大的线条;
  • 剩余的图例/标尺等按原始比例。

调整线条图像的大小后,您必须通过将两个图像重叠成一个图像来组合它们。这也可以用 ImageMagick 来完成。

关于php - PChart线性图表图像质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com