\begingroup
假设有人想画一个图,展示如何在一条线上绘制一个变量及其变换。假设那条线是水平的,顶部刻度是某个变量,比如说十十x,底部变量将是十十x,假设十1 + x十1+十\frac{x}{1+x},其中线顶部的刻度和数字是十十x,并且线底部的刻度和数字将是十1 + x十1+十\frac{x}{1+x}与原文对应的十十x高于该线的值。这种显示方式在较早的医学文献中很常见,但最近变得不那么流行了,也许是因为计算尺不再常用。
Mathematica 中没有 Plot1D 命令。那么,如何在 Mathematica 中做到这一点?有没有什么方法可以欺骗软件来做到这一点?
编辑:例如,以下内容是否可以折叠,这样就不会是是y-轴:
编辑:例如,我拍摄了上面的图像并使用 Gimp 将其转换为图形。
那么,如何在 Mathematica 中做到这一点?
\endgroup
6
最佳答案
2
\begingroup
这是一个想法:
Graphics[{}, Frame -> True,
FrameTicks -> {{None, None}, {
Join[Table[{x, x, {0., 0.01`}}, {x, Range[0.95, 1., 0.01]}],
Table[{x, , {0., 0.005`}}, {x, Range[0.95, 1., 0.002]}]],
Join[
Table[If[
y === Infinity, {1.`, Infinity, {0., 0.01`}}, {y/(1+y),
y, {0., 0.01`}}], {y, {20, 30, 40, 50, 60, 70, 100, 200,
Infinity}}],
Table[{y/(1+y),
Spacer[{0, 0}], {0., 0.005`}}, {y, {25, 35, 45, 55, 64, 80,
120, 140, 160, 180, 250, 300, 350, 400}}]]}},
PlotRange -> {{0.95, 1.}, {0., 0.0001}}, AspectRatio -> Automatic]
\endgroup
7
-
\begingroup
几乎完美,只是需要更好的勾选。恭喜并感谢。(+1)。
\endgroup
– -
1\begingroup
@Carl 哎呀,我一开始留了个小缝隙,所以你可以看到刻度。然后我看到你想要让框架变得非常平坦,但我忘了刻度。
\endgroup
– -
\begingroup
PS 的逆s =吨1 +吨s=吨1+吨s=\frac{t}{1+t}是t =s1 −秒吨=s1−st=\frac{s}{1-s}, 在哪里吨吨t是时间和sss是 0 到 1 范围内的时间变换。顺便说一句,这些变换与用于在 beta 素数分布和 beta 分布之间进行转换的变换相同。这种变换允许在 0 到 1 范围内绘制无限持续时间的曲线,并允许可视化“终端”曲线行为,这是许多领域都非常感兴趣的问题,因此这个问题远非随意的。我可以轻松获取您的代码并对其进行修复……再次感谢。
\endgroup
–
-
\begingroup
做了一些小修改,现在已修复,完美!出于某种奇怪的原因,我不是,trusted user
所以它处于待定状态。
\endgroup
– -
\begingroup
现已完成。感谢一位匿名Trusted
同事。
\endgroup
–
|
\begingroup
以下是使用 的方法AxisObject
:
tLabMaj = {20, 30, 40, 50, 60, 70, 100, 200, Infinity};
tPosMaj = Table[Limit[x/(1.0 + x), x -> t], {t, tLabMaj}];
tLabMin = {25, 35, 45, 55, 64, 80, 120, 140, 160, 180, 250, 300, 350, 400};
tPosMin = Table[t/(1.0 + t), {t, tLabMin}];
Graphics[{
AxisObject[{"Horizontal", 0, {0.95, 1}}, TickDirection -> Up,
TickLabelPositioning -> "Tip", TickPositions -> {{tPosMaj}, {tPosMin}},
TickLabels -> {tLabMaj}, TicksStyle -> Directive[Red, Bold],
AxisLabel -> Placed[Style["t (time)", Red], Center]],
AxisObject[{"Horizontal", 0, {0.95, 1}}, TickDirection -> Down,
TickLabelPositioning -> "Tip", TickPositions -> {{0.95, 1, 0.01},
{0.95, 1, 0.002}},
TicksStyle -> Directive[Bold],
AxisLabel -> "\!\(\*FractionBox[\(t\), \(1 + t\)]\)"]},
PlotRange -> {{0.95, 1}, {0.0, 0.001}}, AspectRatio -> Automatic,
ImageSize -> Large]
\endgroup
|
为什么不使用
Plot
命令?类似Plot[x/(1+x),{x,0,10}]
这样的显示在较早的医学文献中很常见,那么将此类图像的链接或粘贴到您的问题中会有所帮助。正如他们所说,一张图片胜过千言万语 :)。Mathematica 是最好的绘图软件,因此我相信无论它是什么,都可以在 Mathematica 中完成。\endgroup
–
@Nasser 我可以四处寻找一个,但我插入的图像应该可以解释我想要什么。显然,我可以反转刻度线的方向。问题是,如何绘制具有零或无限长宽比的东西?
\endgroup
–
我建议你看一下
AxisObject
。\endgroup
–
@lericr 我看过了。很接近,但
AxisObject
仅为每个 指定一个数字范围。如果可以将它们夹在一起或背对背放置,可能会解决问题。有什么想法可以做到这一点吗?\endgroup
–
我认为这很容易做到。您可以指定端点并组合图形。抱歉我现在无法进行实验,但它看起来应该相当简单。我确信需要花费一些时间来摆弄它并使其工作,但从概念上讲它似乎并不难。我希望其他人可以加入。
\endgroup
–
|