我是一名生物化学研究生,我使用基于欧几里得质心的方法对乳腺肿瘤进行了分类,其中有 437 个上调基因和 370 个下调基因(维度 = 807)。我想绘制一个简单的 2D 图(x = 0-10
,y = 0-10
),其中包含两个质心和颜色编码的点,以在二维中演示该原理。类似于以下内容:
但 X 也用绿色和蓝色表示。轴不需要标记。如果能将我重定向到类似的帖子/答案,我将不胜感激。非常感谢您抽出时间!
编辑:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=\linewidth,
title={K-means Predictions ($k=2$)},
xmin=0,xmax=10,ymin=0,ymax=10,
xlabel={Gene 1},
ylabel={Gene 2}
]
\node[text=blue,font=\sffamily\bfseries,scale=2] at (3,3) {X};
\addplot+[y filter/.expression={y+10},only marks,mark=*,samples=50,domain=1:5] {40*rnd};
\node[text=red,font=\sffamily\bfseries,scale=2] at (7,7){X};
\addplot+[y filter/.expression={y+50},only marks,mark=*,mark options={fill=red},samples=50,domain=5:9] {40*rnd};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
我不知道这些点是如何分布的,因此它们是随机的。这种方法非常手动,因为必须调整域、位置X
等。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=\linewidth,
title={KMeans Predictions ($k=2$)},
xmin=0,xmax=10,ymin=0,ymax=100,
xlabel={Eruption time (minutes)},
ylabel={Time between eruptions (minutes)}
]
\node[text=blue,font=\sffamily\bfseries,scale=2] at (3,30) {X};
\addplot+[y filter/.expression={y+10},only marks,mark=*,samples=50,domain=1:5] {40*rnd};
\node[text=red,font=\sffamily\bfseries,scale=2] at (7,70){X};
\addplot+[y filter/.expression={y+50},only marks,mark=*,mark options={fill=red},samples=50,domain=5:9] {40*rnd};
\end{axis}
\end{tikzpicture}
\end{document}
你可以X
通过调整坐标将其放置在任何(3,30)
地方
\node[text=blue,font=\sffamily\bfseries,scale=2] at (3,30) {X};
将这里的蓝色改为你想要的任何颜色。同样,可以通过调整标记(点)的位置来改变
\addplot+[y filter/.expression={y+10},only marks,mark=*,samples=50,domain=1:5]
{40*rnd};
在此适当调整中的domain
和中的数字 (10) 。fill
mark options
y filter/.expression={y+10}
一个例子:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=\linewidth,
title={KMeans Predictions ($k=2$)},
xmin=0,xmax=10,ymin=0,ymax=100,
xlabel={Eruption time (minutes)},
ylabel={Time between eruptions (minutes)}
]
\node[text=blue,font=\sffamily\bfseries,scale=2] at (3,70) {X};
\addplot+[y filter/.expression={y+50},only marks,mark=*, samples=50,mark
options={fill=olive},domain=1:5] {40*rnd};
\node[text=red,font=\sffamily\bfseries,scale=2] at (7,50){X};
\addplot+[y filter/.expression={y+30},only marks,mark=*,mark options={fill=green},samples=50,domain=5:9] {40*rnd};
\end{axis}
\end{tikzpicture}
\end{document}