![MetaPost 图表:我们如何让 setrange 接受负坐标(当数字系统不是比例时)?](https://linux22.com/image/401319/MetaPost%20%E5%9B%BE%E8%A1%A8%EF%BC%9A%E6%88%91%E4%BB%AC%E5%A6%82%E4%BD%95%E8%AE%A9%20setrange%20%E6%8E%A5%E5%8F%97%E8%B4%9F%E5%9D%90%E6%A0%87%EF%BC%88%E5%BD%93%E6%95%B0%E5%AD%97%E7%B3%BB%E7%BB%9F%E4%B8%8D%E6%98%AF%E6%AF%94%E4%BE%8B%E6%97%B6%EF%BC%89%EF%BC%9F.png)
我想用 MetaPost 包绘制图形graph
。我刚刚注意到,当不是时,setrange
不接受负坐标。-numbersystem
scale
更准确地说,它取它们的绝对值,因此setrange(-4,0,11,100)
实际上将其视为setrange(4,0,11,100)
。
有人知道如何解决这个问题吗?
下面的示例重现了该错误。
outputformat:="eps";
prologues:=3;
input graph
outputtemplate:="figure-01.eps";
beginfig(1);
Width:=7cm;
draw begingraph(Width,0.618034*Width);
setrange(-4,0,+11,100);
gdraw "setrange.data";
endgraph;
endfig;
bye;
使用数据文件setrange.data
-10 100
-9 81
-8 64
-7 49
-6 36
-5 25
-4 16
-3 9
-2 4
-1 1
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
答案1
这是新数字系统的一个错误。特别是,似乎marith.mp
只有 时 的部分才会起作用numbersystem=scaled
。
因此,解决这个问题的方法是(至少目前)在使用时坚持使用默认数字系统graph.mp
。