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

PHPlot新手问询:如何在标题中添加P₁这类下标格式?

PHPlot实现标题下标格式的两种方案

方案一:使用Unicode下标字符(最简单)

PHPlot支持直接渲染Unicode字符,你可以用Unicode内置的下标数字(₁、₂、₃…)替换标题里的普通数字,无需额外修改绘图逻辑,就能实现类似P₁的下标效果。

修改你的标题变量:

$Titel = 'Gerade durch P₁(' . strval($data[0][1]) . '/' . strval($data[0][2]) . ') und P₂(' . strval($data[1][1]) . '/' . strval($data[1][2]).')';

直接保留原有的SetTitle调用即可,标题会自动显示带下标格式的P₁、P₂,完全兼容PHPlot的单字体限制。


方案二:用DrawText手动绘制自定义标题(灵活支持多格式)

如果需要更复杂的格式(比如不同字体、字号组合),可以放弃SetTitle,用DrawText手动分段绘制标题。DrawText的核心参数说明:

  • 参数1:X坐标(图像像素位置)
  • 参数2:Y坐标(图像像素位置)
  • 参数3:要绘制的文本内容
  • 参数4:对齐方式(可选,如'center'表示居中)
  • 参数5:旋转角度(可选,默认为0)
  • 参数6:字体路径(可选,指定自定义字体文件)
  • 参数7:字号(可选,覆盖默认字号)

修改后的完整代码:

# PHPlot Geradengleichung aus 2 Punkten
require_once '../vendor/phplot/phplot.php';

$data = array();
for ($i=0; $i<2; $i++) {
    $data[$i][0] = '';
    for ($j=1; $j<3; $j++) {
        $data[$i][$j] = mt_rand (-100, 100)/10;
    }
}
$m = ($data[1][2] - $data[0][2]) / ($data[1][1] - $data[0][1]);
$b = $data[0][2] - $m * $data[0][1];

$plot = new PHPlot(800, 600);
$plot->SetImageBorderType('plain');

$plot->SetPlotType('lines');
$plot->SetDataType('data-data');
$plot->SetDataValues($data);

# 取消默认标题,改用DrawText手动绘制
// $plot->SetTitle($Titel);

# 自定义字号
$main_font_size = 14;
$sub_font_size = 10; // 下标用更小字号
$title_y = 30; // 标题距离顶部的像素距离
$image_width = $plot->image_width; // 获取图像宽度用于居中计算

# 分段绘制完整标题
// 第一部分:Gerade durch P + 下标1 + 坐标
$plot->DrawText($image_width/2 - 80, $title_y, 'Gerade durch P', 'left', 0, NULL, $main_font_size);
$plot->DrawText($image_width/2 - 45, $title_y + 5, '1', 'left', 0, NULL, $sub_font_size);
$plot->DrawText($image_width/2 - 30, $title_y, '(' . strval($data[0][1]) . '/' . strval($data[0][2]) . ')', 'left', 0, NULL, $main_font_size);

// 第二部分:und P + 下标2 + 坐标
$plot->DrawText($image_width/2 + 40, $title_y, ' und P', 'left', 0, NULL, $main_font_size);
$plot->DrawText($image_width/2 + 75, $title_y + 5, '2', 'left', 0, NULL, $sub_font_size);
$plot->DrawText($image_width/2 + 90, $title_y, '(' . strval($data[1][1]) . '/' . strval($data[1][2]) . ')', 'left', 0, NULL, $main_font_size);

# 保留原坐标轴设置
$plot->SetPlotAreaWorld(NULL, NULL, NULL, NULL);

$plot->DrawGraph();
?>

调整说明:

  • 修改$title_y、各段X坐标值,可以精准控制标题的整体位置
  • 若需使用不同字体,将DrawText的第6个参数替换为目标字体文件路径(如'./fonts/arial.ttf')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:13:23