下面是我的代码的最小示例。我希望虚线保持在圆圈内,而不是像现在这样超出圆圈,但我不知道如何做到这一点。
\documentclass[paper=a4, fontsize=12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amsfonts,amsthm} % Maths
\usepackage{graphicx}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{arrows,%
plotmarks}
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}
% Axis
\draw[thick,->,black] (-3,0)--(3,0) node[below] {$k_x$}; % x axis
\draw[thick,->,black] (0,-3)--(0,3) node[left] {$k_y$}; % y axis
\draw[black,thick] (0,0) circle (2.5cm);
\draw[ultra thick,blue,dashed] (0,0) -- (3,3);
\end{tikzpicture}
\end{figure}
\end{document}
我还想放置等距点作为圆圈的背景。我不知道从哪里开始!有人能帮忙吗?
答案1
解释
改用极坐标。由于(3,3)
与 x 轴正部分成 45 度角,并且您使用 2.5 厘米作为半径,因此您可以将坐标指定为(45:2.5cm)
,这隐含地意味着(canvas polar cs:angle=45,radius=2.5cm)
。您可以在pgf 手册,2.10 版第 125 页。
代码
%\documentclass[paper=a4, fontsize=12pt]{scrartcl}
\documentclass[preview,border=5]{standalone}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amsfonts,amsthm} % Maths
\usepackage{graphicx}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{arrows,%
plotmarks}
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}
% Axis
\draw[thick,->,black] (-3,0)--(3,0) node[below] {$k_x$}; % x axis
\draw[thick,->,black] (0,-3)--(0,3) node[left] {$k_y$}; % y axis
\draw[black,thick] (0,0) circle (2.5cm);
\draw[ultra thick,blue,dashed=on 2pt off 3pt] (0,0) -- (45:2.5cm); % Use the polar coordinate (<angle>:<length>) instead
\end{tikzpicture}
\end{figure}
\end{document}
输出
编辑
我没有看到你的第二个问题。不过我建议你以后把问题限制在一个帖子里。请参见下面的修改后的代码。一些解释:
\pgflinewidth
取line width
这里给出的 key 的值0.5pt
。- 我已经添加
fill=white
到轴标签的节点以将它们与虚线区分开来,并增加了一些距离以免覆盖箭头。
%\documentclass[paper=a4, fontsize=12pt]{scrartcl}
\documentclass[preview,border=5]{standalone}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amsfonts,amsthm} % Maths
\usepackage{graphicx}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{arrows,%
plotmarks,patterns}
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\draw [line width=0.5pt, line cap=round, dash pattern=on 0pt off 2\pgflinewidth] (-3,-3) grid (3,3);
% Axis
\draw[thick,->,black] (-3,0)--(3,0) node[below=1.75pt, fill=white] {$k_x$}; % x axis
\draw[thick,->,black] (0,-3)--(0,3) node[left=1.75pt, fill=white] {$k_y$}; % y axis
\draw[black,thick] (0,0) circle (2.5cm);
\draw[ultra thick,blue,dashed=on 2pt off 3pt] (0,0) -- (canvas polar cs:angle=45,radius=2.5cm);
\end{tikzpicture}
\end{figure}
\end{document}
参考
看TikZ 中带有圆点的虚线了解在 中制作虚线的不同方法tikz
。
答案2
除了使用极坐标或使用三角函数计算虚线终点的坐标外,另一种选择是使用裁剪。在这种情况下,这可能是一种过度的做法,但在更复杂的情况下可能会有用:
\documentclass[paper=a4, fontsize=12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amsfonts,amsthm} % Maths
\usepackage{graphicx}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{arrows,%
plotmarks}
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}
% Axis
\draw[thick,->,black] (-3,0)--(3,0) node[below] {$k_x$}; % x axis
\draw[thick,->,black] (0,-3)--(0,3) node[left] {$k_y$}; % y axis
\draw[black,thick] (0,0) circle (2.5cm);
\begin{scope}
\draw[clip] (0,0) circle (2.5cm);
\draw[ultra thick,blue,dashed] (0,0) -- (3,3);
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
请注意,圆圈被绘制了两次,第二次是在环境内scope
使用该clip
选项。这将导致此环境中的所有内容都被剪裁到圆圈内。