You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pChart绘制风向图时Y轴无法限制在0-360范围的技术问题

pChart风向图表Y轴范围无法限制在0-360的问题解决

问题描述

使用pChart开发气象站风向图表时,尝试通过手动设置Y轴范围为0-360,以便添加0°、90°、180°、270°等方位标识线,但图表Y轴始终显示为0-400。测试数据均在0-360区间内,调整Max值为359/360、配置MinDivHeight、Factors等参数均无效,但百分比数据设置0-100范围可正常生效。

测试代码

<?php
include("pchart/class/pData.class.php");
include("pchart/class/pDraw.class.php");
include("pchart/class/pImage.class.php");

$points = array(0, 10, 90, 270, 345, 355);

$scale = array(
    'Mode' => SCALE_MODE_MANUAL,
    'ManualScale' => array(0=>array("Min"=>0,"Max"=>360)),
);

$data = new pData();
$data->addPoints($points, "dir");

$picture = new pImage(256, 128, $data, TRUE);
$picture->setFontProperties(array("FontName" => "pchart/fonts/GeosansLight.ttf","FontSize"=>10));
$picture->setGraphArea(40,10,216,108);
$picture->drawScale($scale);
$picture->drawPlotChart(array("PlotSize"=>1,"PlotBorder"=>TRUE,"BorderSize"=>1));
$picture->Render("wind.png");

echo "<img src='wind.png'>";
?>

问题原因

pChart的SCALE_MODE_MANUAL模式下,Y轴范围会自动根据刻度因子调整,确保所有刻度值是因子的整数倍。默认Y轴刻度因子为50,360不是50的整数倍,因此会自动向上取整到最近的因子倍数(50×8=400)。而百分比数据0-100刚好是50的整数倍,所以能正常匹配手动范围。

解决方法

在$scale数组中添加Factors参数,指定Y轴的刻度因子为90(刚好对应方位角的关键节点),或其他符合需求的因子,强制让手动范围生效:

修改后的代码片段

$scale = array(
    'Mode' => SCALE_MODE_MANUAL,
    'ManualScale' => array(0=>array("Min"=>0,"Max"=>360)),
    'Factors' => array(0=>90) // 指定Y轴刻度因子为90,匹配方位角
);

说明

  • 设置Factors为90后,Y轴会严格遵循0-360的范围,同时刻度会自动对齐0°、90°、180°、270°、360°,完美适配方位标识线的需求。
  • 如果需要更精细的刻度,可以将因子改为10、30等其他数值,只要确保360是该因子的整数倍即可。

内容的提问来源于stack exchange,提问作者Shdwdrgn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:55:28