我正在使用 tikzpicture 创建条形图,如下所示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\title{test}
\author{}
\date{}
\begin{document}
\maketitle
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
symbolic x coords={RSA1024,RSA2048,RSA4096,Kyber512,Kyber768,Kyber1024}, xtick=data]
\addplot[ybar,fill=blue] coordinates {
(RSA1024,483)
(RSA2048,489)
(RSA4096,536)
(Kyber512,120)
(Kyber768,111)
(Kyber1024,143)
};
\end{axis}
\end{tikzpicture}
\caption{Some caption}
\label{fig:my_label}
\end{figure}
\end{document}
目前看起来是这样的:
但是,标签几乎互相重叠,看起来不太好。我希望它们旋转 60 度角。我该怎么做?
其次,我希望最右边的 3 个条形的颜色与左边的 3 个条形不同。我希望左边的 3 个条形为蓝色,右边的 3 个条形为橙色。我该怎么做?我尝试在同一张图片中多次使用 addplot,但没有成功。
下面是我希望这些变化看起来的样子:
答案1
可以在同一张图片中多次使用 addplot 来获得不同的颜色。选项xticklabel style={xshift=-10pt, rotate=60}
会旋转标签并将其向右移动,这样它们在条形图上就会相邻。
\documentclass[tikz,border=10]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
symbolic x coords={RSA1024,RSA2048,RSA4096,Kyber512,Kyber768,Kyber1024},
xtick={RSA1024,RSA2048,RSA4096,Kyber512,Kyber768,Kyber1024},
xticklabel style={xshift=-10pt, rotate=60}]
\addplot[ybar,fill=blue] coordinates {
(RSA1024,483)
(RSA2048,489)
(RSA4096,536)
};
\addplot[ybar,fill=orange] coordinates {
(Kyber512,120)
(Kyber768,111)
(Kyber1024,143)
};
\end{axis}
\end{tikzpicture}
\end{document}