我已经花了几个小时来创建这个图形 - 但没有成功。
我尝试过不同类型的tikz
和pstricks
usepackages multido
。
x_2
从 a 到、d
到x_1
和p_1
到 的线c
应为虚线。
如果可以在 轴处添加x
箭头y
。
\documentclass[a4paper,12pt,oneside]{article}
\usepackage[english]{babel}
\usepackage{tikz}
\usepackage{pgf}
\usetikzlibrary{shapes,arrows,positioning,calc}
\usepackage{tabu}
\usepackage{hyperref}
\usepackage{longtable}
\usepackage{array}
\usepackage{siunitx,multirow,tabularx,booktabs}
\usepackage{amsmath,amssymb,bm,mathtools}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=6]
\draw[->] (0,0) -- (0,1) node[left] {$P/X$};
\draw[->] (0,0) -- (1,0) node[below] {$X/t$};
\end{tikzpicture}
\end{center}
\end{document}
答案1
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [ultra thick,-latex] (0,0)--(10,0) node [right, above]{$x/t$};
\draw [ultra thick,-latex] (0,0)--(0,12) node [right]{$P/X$};
\coordinate (X2) at (4,0);
\coordinate (X1) at (6,0);
\coordinate (P1) at (0,5);
\coordinate (P2) at (0,7);
\coordinate (b) at (4,5);
\coordinate (d) at (6,7);
\coordinate (a) at (4,7);
\coordinate (c) at (6,5);
\node at (X2) [below] {$X2$};
\node at (X1) [below] {$X1$};
\node at (P2) [left] {$P2$};
\node at (P1) [left] {$P1$};
\draw [dashed] (a)node [above right] {$a$}--(X2);
\draw [dashed] (d)node [above right] {$d$}--(X1);
\draw [dashed] (P1)--(c)node [above right] {$c$};
\draw (P2)--(d)node [above right] {$d$};
\node at (b) [above right]{$b$};
\draw (d)--++(0:2)node [right] {$ MC=AC$};
\draw (c)--(a)--++(135:5.65);
\draw (c)--++(-45:2) node [below] {$D$};
\end{tikzpicture}
\end{document}
答案2
PSTricks 解决方案使用pst-plot
包裹:
\documentclass{article}
\usepackage{pst-plot}
\begin{document}
\begin{pspicture}(-0.5,-0.45)(8.25,8) % values found manually
\psaxes[ticks = none, labels = none]{->}(0,0)(-0.2,-0.2)(7.5,7.5)[$X/t$,0][$P/X$,90]
\psyTick(0){0}
\psline(0,7)(5,2)
\uput[270](5,2){$D$}
\psline(0,5)(5,5)
\uput[0](5,5){$\mathrm{MC} = \mathrm{AC}$}
\psset{linestyle = dashed}
\psline(2,5)(2,0)
\psline(3.5,5)(3.5,0)
\psline(0,3.5)(3.5,3.5)
\uput[45](2,5){$a$}
\uput[45](2,3.5){$b$}
\uput[45](3.5,3.5){$c$}
\uput[90](3.5,5){$d$}
\uput[180](0,3.5){$P_{1}$}
\uput[180](0,5){$P_{2}$}
\uput[270](2,0){$X_{2}$}
\uput[270](3.5,0){$X_{1}$}
\end{pspicture}
\end{document}
答案3
您可以自动化交叉操作以使图形在以下解决方案中更加灵活。
您需要加载 TikZ 库calc
并intersections
使用
\usetikzlibrary{intersections,calc}
然后{tikzpicture}
你手动设置坐标系
\draw [thick,->] (0,0)--(10,0) node [right, above]{$X/t$};
\draw [thick,->,name path=y axis] (0,0)--(0,12) node [right]{$P/X$};
\node at (0,0) [below left] {$0$};
下一步是定义轴上的坐标。在这里,您可以使用形状coordinate
将节点名称用作坐标,而不必考虑找到正确的锚点。并label
用于排版图片中的名称。
\node (X2) at (4,0) [coordinate,label=below:$X_2$] {};
\node (X1) at (6,0) [coordinate,label=below:$X_1$] {};
\node (P1) at (0,5) [coordinate,label=left:$P_2$] {};
\node (P2) at (0,7) [coordinate,label=left:$P_1$] {};
现在是时候绘制虚线了。您可以使用以下语法来获取两个坐标的垂直交点:(A |- B)
或(A -| B)
其中A
和B
必须是两个有效坐标(如果像则用括号括起来(1,2)
)。我们再次添加带有标签的节点作为坐标以供以后参考。从 P2 开始的线使用shorten >
负值将线延长 2 厘米。
\draw [dashed,shorten >=-4cm] (P2) -- (P2 -| X2)
node (a) [coordinate,label=above:$a$] {}
node [right=4cm] {$MC=AC$};
\draw [dashed] (X2) -- (a);
\draw [dashed] (P1) -- (P1 -| X1)
node (c) [coordinate,label=above right:$c$] {};
\draw [dashed] (X1) -- (P2 -| X1)
node (d) [coordinate,label=above:$d$] {};
\node at (P1 -| X2) (b) [coordinate,label=above right:$b$] {};
最后要做的是绘制图形;因此,您可以定义一个名为的辅助路径graph
——请记住,y 轴也是命名的。使用calc
库,您可以再次说出坐标的位置,并且($(A)!f!(B)$)
是位于通过和长度为*( – )的线上的因子。该线必须与 y 轴相交,因此您可以添加选项以查看路径。A
B
f
A
B
f
(B)
(A)
draw,red
\path [name path=graph] (c) -- ($(c)!3.1!(a)$);
然后利用交点绘制图形
\draw [thick, name intersections={of=y axis and graph,by=A}] (A) -- ($(a)!2!(c)$)
node (D) [coordinate,label=below:$D$] {};
这会给你这个结果:
现在您可以更改P1
、P2
或X1
,X2
其余部分也会相应更改。
完整代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections,calc}
\begin{document}
\begin{tikzpicture}
% axes
\draw [thick,->] (0,0)--(10,0) node [right, above]{$X/t$};
\draw [thick,->,name path=y axis] (0,0)--(0,12) node [right]{$P/X$};
\node at (0,0) [below left] {$0$};
% coordinates and labels
\node (X2) at (4,0) [coordinate,label=below:$X_2$] {};
\node (X1) at (6,0) [coordinate,label=below:$X_1$] {};
\node (P1) at (0,5) [coordinate,label=left:$P_2$] {};
\node (P2) at (0,7) [coordinate,label=left:$P_1$] {};
% intersections
\draw [dashed,shorten >=-4cm] (P2) -- (P2 -| X2)
node (a) [coordinate,label=above:$a$] {}
node [right=4cm] {$MC=AC$};
\draw [dashed] (X2) -- (a);
\draw [dashed] (P1) -- (P1 -| X1)
node (c) [coordinate,label=above right:$c$] {};
\draw [dashed] (X1) -- (P2 -| X1)
node (d) [coordinate,label=above:$d$] {};
\node at (P1 -| X2) (b) [coordinate,label=above right:$b$] {};
% graph
\path [name path=graph] (c) -- ($(c)!3.1!(a)$);
\draw [thick, name intersections={of=y axis and graph,by=A}] (A) -- ($(a)!2!(c)$)
node (D) [coordinate,label=below:$D$] {};
\end{tikzpicture}
\end{document}
答案4
仅用于使用 PSTricks 进行打字练习。
\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-plot,pst-eucl}
\psset
{
algebraic,
PointSymbol=none,
saveNodeCoors,
}
\def\y{5*(-x/6+1)}
\begin{document}
\begin{pspicture}(-.5,-.5)(7,6)
\pstGeonode[PosAngle={-135,-90}]{O}(2,0){X_2}(4,0){X_1}
\pstGeonode[PosAngle=45](*N-X_2.x {\y}){a}(*N-X_1.x {\y}){c}
\pstGeonode[PosAngle={45,45,180}](a|c){b}(c|a){d}(0,0|c){P_1}(0,0|a){P_2}
\foreach \pt in {a,...,d}{\psCoordinates[dotsize=0](\pt)}
\psaxes[ticks=none,labels=none](0,0)(6,5)[$X/t$,0][$P/X$,90]
\psplot{1}{5}{\y}
\pcline[nodesepB=-1](a)(d)\ncput[npos=1.4]{$MC=AC$}
\end{pspicture}
\end{document}