
다음 그래픽에서 영감을 받아 tikz로 복사해 보았습니다. 몇 가지 세부 사항을 수정하고 싶습니다.
- 컬러 배경의 테두리는 균일해야 합니다.
- 나는 아미노산 사이의 결합을 원하지 않고, 분리되는 것을 선호합니다.
첫 번째 시도는 다음과 같습니다.
\documentclass{standalone}%
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,positioning,fit,petri}
\usepackage{chemfig,xstring}
\begin{document}
\setatomsep{2.5em}
\setcrambond{2pt}{}{}
\begin{tikzpicture}[
point/.style={circle,draw=none,minimum size=#1},
point/.default=0pt % default Wert für minimum size bei point]
\foreach \anfang/\ende/\farbe in { 25/100/green!60,104/170/orange!60,174 /254/red!60, 258/314/yellow!60, 318/381/blue!60}
\draw[fill=\farbe,draw=none] (0,0) -- (\anfang:12cm) arc (\anfang:\ende:12cm);
\draw[fill=white,draw=none] (0,0) circle (6cm);
% mit count=\i werden die Kreise nummeriert
% der zugehörige Winkel wird mit evaluate aus dieser Nummer berechnet
% insgesamt werden (bis zu) 20 Kreise auf 360 Grad gleichmäßig verteilt
\foreach[count=\i,evaluate=\i as \angle using (\i-1)*360/20] \text in {%
1,2,3,4,\begin{tiny}\schemestart \chemnameinit{}\chemname{\chemfig{C(=[3]O)(-[1]OH)(-[6]CH_2(-[6]CH(-[5]NH_2)(-[7]C(=[6]O)(-[1]OH))))}}{Asparaginsäure\\Asp\\D} \schemestop\end{tiny},\begin{tiny}\schemestart \chemnameinit{} \chemname{\chemfig{CH(-[3]NH_2)(-[1]C(=[2]OH)(-[7]OH))(-[6]CH_2(-[6]C(=[5]O)(-[7]NH_2)))}}{Asparagin\\Asn\\N}\schemestop\end{tiny},7,8,9,10,11,12,13,14,15,16,17,18,19,20% Beschriftung der Kreise
}
\node[point=2.2em] (node\i) at (\angle:9) {\text};
\end{tikzpicture}
\end{document}
다른 TeX 파일에 아미노산의 구조를 적어서 주로 명령어를 사용합니다 \input
. MWE의 경우 두 개의 아미노산이면 충분합니다.
내부 원의 중심을 가리키도록 노드/아미노산을 어떻게 회전시킬 수 있습니까?
어떤 대체 솔루션이라도 환영합니다.
정말 죄송하지만 내 질문에 댓글을 달 수 없어서 여기에 정보를 추가합니다.
@Alenanno 매우 유용한 답변에 감사드립니다.
나는 같은 그래픽을 원하지 않습니다. 나는 실제로 지금까지 얻은 것을 좋아합니다. 중심까지의 거리가 거의 같은 색상 원 안에 모든 구조 공식이 있습니다.
다음 단계는 외부 설명(소형, 극성(친수성) 등)입니다. 각각 관리할 수 있다면 가능하다면 색칠된 원 안쪽 테두리의 구조식 아래에 설명을 적고 싶습니다.
단일 노드의 주소를 지정하는 방법을 알려주실 수 있나요?
\aminoacid 명령을 무엇에 대해 정의했나요? - MWE에서 구할 수 없었어요
인사하다
@Alenanno: 그것이 바로 제가 원하는 것입니다! 정말 감사합니다! 수락 버튼 옆에 답변을 표시하는 기능이 있나요?
답변1
rotate=\angle-90
foreach로 인쇄된 노드에 추가할 수 있습니다 .
편집하다:OP에 이미지를 원하지 않으므로 여기에 수정된 버전이 있습니다. 중앙에 있는 흰색 원을 사용하면 "자르기" 없이 색상이 지정된 호를 그릴 수 있습니다. 나는 그것을 고쳤습니다. 설명은 원하는대로인 것 같습니다(독일어 문자는 수정되어야 합니다). 색상을 지정하지 않으려면 \color{\farbe}
코드에서 해당 줄을 제거하세요.
편집 2:다른 버전은 아래를 참조하세요.
산출
암호
\documentclass[margin=10pt]{standalone}%
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{calc, arrows,decorations.pathmorphing,backgrounds,positioning,fit,petri, intersections, decorations.text}
\usepackage{pgfmath}
\usepackage{chemfig,xstring}
\tikzset{
point/.style={minimum size=#1},
point/.default=0pt,
bent text/.style={postaction={
decorate,
decoration={
text along path,
reverse path=true,
text align/align=center,
text={| \Large\bfseries\color{\farbe}|#1}
}
}
}
}
\def\colorlist{{"green!60", "orange!60", "red!60", "yellow!60", "blue!60"}}
\begin{document}
\setatomsep{2.5em}
\setcrambond{2pt}{}{}
\begin{tikzpicture}\tiny
\foreach \anfang/\ende/\descr [count=\ix starting from 0] in {%
25/100/{klein polar (hydrophil)},
104/170/{groß, polar (hydrophil)},
174/254/{mittiere Polarität},
258/314/{groß unpolar},
318/381/{klein, unpolar}}{
\pgfmathsetmacro\farbe{\colorlist[\ix]}
\fill[\farbe] (\anfang:6cm) -- (\anfang:12cm) arc (\anfang:\ende:12cm) -- (\ende:6cm) arc (\ende:\anfang:6cm);
\path[bent text={\descr}] (\anfang:5cm) arc (\anfang:\ende:5cm);
}
% mit count=\i werden die Kreise nummeriert
% der zugehörige Winkel wird mit evaluate aus dieser Nummer berechnet
% insgesamt werden (bis zu) 20 Kreise auf 360 Grad gleichmäßig verteilt
\foreach [count=\i, evaluate=\i as \angle using int((\i-1)*360/20), evaluate=\i as \midangle using int((\i-1.5)*360/20), remember=\midangle as \lastmid (initially -27)] \text in {%
1,2,3,4,
\schemestart \chemnameinit{}\chemname{\chemfig{C(=[3]O)(-[1]OH)(-[6]CH_2(-[6]CH(-[5]NH_2)(-[7]C(=[6]O)(-[1]OH))))}}{Asparaginsäure\\Asp\\D} \schemestop,
\schemestart \chemnameinit{} \chemname{\chemfig{CH(-[3]NH_2)(-[1]C(=[2]OH)(-[7]OH))(-[6]CH_2(-[6]C(=[5]O)(-[7]NH_2)))}}{Asparagin\\Asn\\N}\schemestop
,7,8,9,10,11,12,13,14,15,16,17,18,19,20% Beschriftung der Kreise
}{
\node[point=2.2em, rotate=\angle-90] (node\i) at (\angle:9) {\text};
}
\end{tikzpicture}
\end{document}
OP 일치
이미지에 맞는 다른 버전이 있습니다.
산출
암호
\documentclass[margin=10pt]{standalone}%
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{calc, arrows,decorations.pathmorphing,backgrounds,positioning,fit,petri, intersections, decorations.text}
\usepackage{pgfmath}
\usepackage{chemfig,xstring}
\definecolor{xlime}{RGB}{228,246,13}
\definecolor{xpink}{RGB}{245,109,175}
\definecolor{xorange}{RGB}{232,117,53}
\definecolor{xgreen}{RGB}{151,184,43}
\definecolor{xblue}{RGB}{144,181,236}
\tikzset{
point/.style={minimum size=#1},
point/.default=0pt,
bent text/.style={postaction={
decorate,
decoration={
text along path,
reverse path=true,
text align/align=center,
text={| \Large\bfseries\color{\farbe}|#1}
}
}
}
}
\newcommand\aminoacids[4][black]{
\node[point=2.2em, minimum width=5cm,rotate=\angle-90, inner sep=2mm] (node#2) at (#3) {#4};
\path[green, name path=around] (node#2.north west) -- (node#2.north east) -- (node#2.south east) -- (node#2.south west) -- cycle;
\path[name path={tris#2}] (\midangle:12cm) -- (0,0) -- (\lastmid:12cm) -- cycle;
\path[name intersections={of={tris#2} and around, name=i, total=\t}];
\begin{scope}[on background layer]
\filldraw[draw=black, fill=#1] (i-1) -- (i-2) -- (i-4) -- (i-3) -- cycle;
\end{scope}
}
\def\colorlist{{"xgreen", "xorange", "xpink", "xlime", "xblue"}}
\begin{document}
\setatomsep{2.5em}
\setcrambond{2pt}{}{}
\begin{tikzpicture}\tiny
\foreach \anfang/\ende/\descr [count=\ix starting from 0] in {%
25/100/{klein polar (hydrophil)},
104/170/{groß, polar (hydrophil)},
174/254/{mittiere Polarität},
258/314/{groß unpolar},
318/381/{klein, unpolar}}{%
\pgfmathsetmacro\farbe{\colorlist[\ix]}
\path[bent text={\descr}] (\anfang:5cm) arc (\anfang:\ende:5cm);
}
\foreach [count=\i,
evaluate=\i as \angle using int((\i-1)*360/20),
evaluate=\i as \midangle using int((\i-1.5)*360/20),
evaluate=\midangle as \lastmid using int((\i-.5)*360/20)
]
\text/\colr in {%
1/0,2/0,3/0,4/0,
\schemestart \chemnameinit{}\chemname{\chemfig{C(=[3]O)(-[1]OH)(-[6]CH_2(-[6]CH(-[5]NH_2)(-[7]C(=[6]O)(-[1] OH))))}}{Asparaginsäure\\Asp\\D} \schemestop/0,
\schemestart \chemnameinit{} \chemname{\chemfig{CH(-[3]NH_2)(-[1]C(=[2]OH)(-[7]OH))(-[6]CH_2(-[6]C(=[5]O)(-[7] NH_2)))}}{Asparagin\\Asn\\N}\schemestop/0
,7/1,8/1,9/1,10/2,11/2,12/2,13/3,14/3,15/3,16/3,17/4,18/4,19/4,20/4% Beschriftung der Kreise
}{
\pgfmathsetmacro\farbe{\colorlist[\colr]}
\aminoacids[\farbe]{\i}{\angle:9}{\text}
}
\end{tikzpicture}
\end{document}