修复使用 pgfplots 绘制的直方图

修复使用 pgfplots 绘制的直方图

我需要通过以下方式修复直方图:

  1. 垂直设置 x 坐标,以便文本可读且不会互相推挤。
  2. 删除指数符号。

我也不明白为什么垂直条与 x 轴分离。

目前直方图如下

在此处输入图片描述

\begin{tikzpicture}[]
    \begin{axis}[
            scale only axis,
            height=6cm,
            width=\textwidth-1,
            ybar,
            ylabel={Secondi},
            symbolic x coords={
                    Creazione DID document,
                    Creazione chiave RSA,
                    Rilascio di credenziale,
                    Accesso al servizio,
                    Inoltro di richiesta,
                    Revoca di credenziale,
                    Creazione signature JWS,
                    Creazione Verifiable Credential,
                    Creazione Verifiable Presentation,
                    Resolve DID document,
                    Cifratura EAX,
                    Decifrazione EAX,
                    Handshake
                },
            nodes near coords,
            enlarge x limits=0.1,
        ]
        \addplot[] coordinates {
                (Creazione DID document,3.87)
                (Creazione chiave RSA,1.79)
                (Rilascio di credenziale,0.90)
                (Accesso al servizio,0.69)
                (Inoltro di richiesta,0.69)
                (Revoca di credenziale,0.83)
                (Creazione signature JWS,0.18)
                (Creazione Verifiable Credential,0.18)
                (Creazione Verifiable Presentation,0.22)
                (Resolve DID document,0.05)
                (Cifratura EAX,0.04)
                (Decifrazione EAX,0.04)
                (Handshake,0.31)
            };
    \end{axis}
\end{tikzpicture}

也许有比我试图画的更好的替代方案?我愿意接受其他建议。

更新:

我旋转了直方图

\begin{tikzpicture}[]
    \begin{axis}[
            scale only axis,
            height=8cm,
            width=10cm,
            xbar,
            xlabel={Secondi},
            symbolic y coords={
                    Creazione DID document,
                    Creazione chiave RSA,
                    Rilascio di credenziale,
                    Accesso al servizio,
                    Inoltro di richiesta,
                    Revoca di credenziale,
                    Creazione signature JWS,
                    Creazione Verifiable Credential,
                    Creazione Verifiable Presentation,
                    Resolve DID document,
                    Cifratura EAX,
                    Decifrazione EAX,
                    Handshake
                },
            nodes near coords,
            enlarge y limits=0.1,
            % xticklabel style={rotate=90,yshift=0.2cm}
        ]
        \addplot[] coordinates {
                (3.87,Creazione DID document)
                (1.79,Creazione chiave RSA)
                (0.90,Rilascio di credenziale)
                (0.69,Accesso al servizio)
                (0.69,Inoltro di richiesta)
                (0.83,Revoca di credenziale)
                (0.18,Creazione signature JWS)
                (0.18,Creazione Verifiable Credential)
                (0.22,Creazione Verifiable Presentation)
                (0.05,Resolve DID document)
                (0.04,Cifratura EAX)
                (0.04,Decifrazione EAX)
                (0.31,Handshake)
            };
    \end{axis}
\end{tikzpicture}

但是一些 y 坐标被隐藏了,我无法将宽度设置为 \textwidth。

这是当前结果

在此处输入图片描述

答案1

编辑: 现在我发现我没有加载正确版本的图像以及图表代码(我测试了几个版本)。还纠正了一些拼写错误。

像这样?

在此处输入图片描述

您需要定义:

  • nodes near coords style,你应该添加/pgf/number format/fixed
  • xticklabel style我建议定义text width,如果需要,它们可以在两行中写入,减少linespread,之间的大小xtick可以更小,并且文本会出现在它们所有的地方
  • 适当的定义yminymay
  • 适当的设置 enlarge x limits,所有的条都是可见的
  • x适当设置(meta) tick之间的距离

考虑到上述内容,MWE 是:

\documentclass[margin=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
            scale only axis,
            height=6cm,
            ybar,
            bar width=12pt,
            ylabel={Secondi},
            x=10mm,
            symbolic x coords={
                    Creazione DID document,
                    Creazione chiave RSA,
                    Rilascio di credenziale,
                    Accesso al servizio,
                    Inoltro di richiesta,
                    Revoca di credenziale,
                    Creazione signature JWS,
                    Creazione Verifiable Credential,
                    Creazione Verifiable Presentation,
                    Resolve DID document,
                    Cifratura EAX,
                    Decifrazione EAX,
                    Handshake
                },
            nodes near coords,
            nodes near coords style={font=\scriptsize, rotate=90, anchor=west,
                                     /pgf/number format/fixed},              % <---
            ymin=0, ymax=4.5,                                                % <---
            enlarge x limits=0.05,                                           % <---
            xticklabel style = {text width=9em, align=flush right,
                                rotate=90, anchor=east,                                                                                                 
                                font=\small\linespread{0.84}\selectfont},    % <---
        ]
        \addplot coordinates {
                (Creazione DID document,3.87)
                (Creazione chiave RSA,1.79)
                (Rilascio di credenziale,0.90)
                (Accesso al servizio,0.69)
                (Inoltro di richiesta,0.69)
                (Revoca di credenziale,0.83)
                (Creazione signature JWS,0.18)
                (Creazione Verifiable Credential,0.18)
                (Creazione Verifiable Presentation,0.22)
                (Resolve DID document,0.05)
                (Cifratura EAX,0.04)
                (Decifrazione EAX,0.04)
                (Handshake,0.31)
            };
    \end{axis}
\end{tikzpicture}
\end{document}

相关内容