请教作图时如何使坐标轴的长宽比等于1
mathematica吧
全部回复
仅看楼主
level 7
云淡风轻_2024
楼主
我在作一个简单的函数图像,规定横纵坐标的范围都是 [0, 1]。我希望横轴长度等于纵轴长度,为此我输入命令 AspectRatio -> 1。但是发现生成的图像的纵轴明显比横轴长,请问该怎么改正?
我写的代码如下:
Plot[{4 x1, x1/4}, {x1, 0, 1}, AxesOrigin -> {0, 0},
AxesLabel -> {x1, x2}, PlotRange -> {0, 1}, AspectRatio -> 1]
生成的图像如下:
请吧里高手解答,谢谢啦!!
2022年02月15日 10点02分
1
吧务
level 10
asdasd1dsadsa
这个问题有点意思,我也不清楚原因,也懒得深入剖析……
2022年02月15日 14点02分
2
云淡风轻_2024
我知道问题出在哪儿了。把 PlotRange -> {0, 1} 改成 PlotRange -> {{0, 1}, {0, 1}} 就行了,改完后图像的横纵轴长度就是1:1。但是这里面的具体机制我不清楚。
2022年02月18日 04点02分
level 12
丙亭
这应该是
lz
的错觉吧。下面
这个红色的框是683x671像素,长宽不等,但沿两轴裁剪后得到的图
则是633x633像素的图
2022年02月16日 01点02分
3
asdasd1dsadsa
LZ的图是444:462,我也能复现。你是什么版本?我是12.2.0
2022年02月16日 06点02分
丙亭
@asdasd1dsadsa
我用的是11.0,放大也是成比例的嘛,裁剪之后不影响。
2022年02月17日 01点02分
云淡风轻_2024
我用尺子仔细量过,纵轴肯定比横轴长一些。另外我找到解决办法了,不需要裁剪,把 PlotRange -> {0, 1} 改成 PlotRange -> {{0, 1}, {0, 1}} 就行了。
2022年02月18日 04点02分
丙亭
@云淡风轻_2024
我裁剪主要是印证楼主你说的那种情况,我用11.0把你一楼的代码运行,结果横纵轴一样长。至于你改的这个,只是把它习惯性多那一点点去掉了,这个确实不错。
2022年02月19日 01点02分
level 9
翌日翌日翌
我的建议是AspectRatio->Automatic,反正我一般这么弄,其他的也没用过。
2022年02月18日 04点02分
4
云淡风轻_2024
这个命令无法保证横轴和纵轴长度相等吧??
2022年02月18日 06点02分
吧务
level 10
asdasd1dsadsa
已实验确定,差异源于非对称的PlotRangePadding:
Plot[{4 x1, x1/4}, {x1, 0, 1}, AxesOrigin -> {0, 0},
AxesLabel -> {x1, x2}, PlotRange -> {0, 1}, AspectRatio -> 1]
AbsoluteOptions[%,PlotRangePadding]
Plot[{4 x1, x1/4}, {x1, 0, 1}, AxesOrigin -> {0, 0},
AxesLabel -> {x1, x2}, PlotRange -> {{0, 1},{0, 1}}, AspectRatio -> 1]
AbsoluteOptions[%,PlotRangePadding]
2022年02月18日 10点02分
6
1