为什么我在 ybar 间隔图的图例中得到的是线型?

为什么我在 ybar 间隔图的图例中得到的是线型?

在此处输入图片描述你好,

我有一个组合的 ybar 间隔和线图,如附图所示,但在图例条目中,条形图标也显示为线。图例 PSM 和 MICP 中的前 2 个条目应显示为条形,因为在图中它们是红色和蓝色条形。

这是我的代码:(无法附加此处使用其数据的引用的 excel 文件)

\documentclass[10pt]{article}
\hoffset = 0.08in
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
\usepackage{hyperref}
\usepackage{longtable}
\usepackage[margin=1in]{geometry}
\usepackage{graphicx}
\usepackage{lastpage}
\usepackage{epstopdf}
\usepackage{array}
\usepackage{pgfplots}
\usepackage{float}
\usepackage{tikz}
\usepackage{subfigure}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage[document]{ragged2e}
\usepackage{helvet}
%\usepackage[default,osfigures,scale=0.95]{opensans}
\usepackage{opensans}
\usepackage[T1]{fontenc}
\usetikzlibrary{external}
%\tikzexternalize
\pgfplotsset{compat=1.15}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{semilogxaxis}[
xlabel= Pore throat radius {[$\mu$m]},
   ylabel= Normalized frequency,
    ymin=0, ymax=1,
   xmin=0.001,xmax=200,
     xtick align=inside,
    ytick align=inside,
     legend style={at={(0.01,0.98)},font=\footnotesize,anchor=north west, draw=none, fill=none},
     ]
 \addplot[ybar interval, mark=none, red, fill opacity=0.1, fill=red]  table [x=PSMX,y=PSMY,col sep=comma]{Figure8.csv};
  \label{plot_one}
\addplot[ybar interval, mark=none, blue, fill opacity=0.3, fill=blue]  table [x=MICPX,y=MICPY,col sep=comma]{Figure8.csv};
  \label{plot_two}
\addplot [mark=none, black, thick, dashed]
    table [x=Dashx,y=Dashy,col sep=comma]{Figure8.csv};
    \label{plot_three}
\addplot [smooth,mark=none, blue, thick]
    table [x=PC1X,y=PC1Y,col sep=comma]{Figure8.csv};
    \label{plot_four} 
\addplot [smooth,mark=none, green, thick]
    table [x=PC2X,y=PC2Y,col sep=comma]{Figure8.csv};
    \label{plot_five} 
\addplot [smooth,mark=none, yellow, thick]
    table [x=PC3X,y=PC3Y,col sep=comma]{Figure8.csv};
    \label{plot_six} 
\addplot [smooth,mark=none, cyan, thick]
    table [x=PC4X,y=PC4Y,col sep=comma]{Figure8.csv};
    \label{plot_seven} 
\addplot [smooth,mark=none, magenta, thick]
    table [x=PC5X,y=PC5Y,col sep=comma]{Figure8.csv};
    \label{plot_eight} 
\addplot [smooth,mark=none, orange, thick]
    table [x=PC6X,y=PC6Y,col sep=comma]{Figure8.csv};
    \label{plot_nine}
\addlegendimage{/pgfplots/refstyle=plot_one}\addlegendentry{$PSM$}
\addlegendimage{/pgfplots/refstyle=plot_two}\addlegendentry{$MICP$}
\addlegendimage{/pgfplots/refstyle=plot_three}\addlegendentry{$min$ $r_{throat}$}
\addlegendimage{/pgfplots/refstyle=plot_four}\addlegendentry{$296.1$ $kPa$}
\addlegendimage{/pgfplots/refstyle=plot_five}\addlegendentry{$161.3$ $kPa$}
\addlegendimage{/pgfplots/refstyle=plot_six}\addlegendentry{$82.7$ $kPa$}
\addlegendimage{/pgfplots/refstyle=plot_seven}\addlegendentry{$6.9$ $kPa$}
\addlegendimage{/pgfplots/refstyle=plot_eight}\addlegendentry{$6.6$ $kPa$}
\addlegendimage{/pgfplots/refstyle=plot_nine}\addlegendentry{$1$ $kPa$}
\end{semilogxaxis}
\end{tikzpicture}
\end{figure}
\end{document}

答案1

添加ybar interval legend\addplot带有条形图的 s 中以设置正确的图例类型。pgfplots手册中对此进行了描述。\addplot [ybar interval]这样做只会改变数据点的可视化方式。图例、刻度等仅在添加ybar interval环境选项时才会修改axis。但是,当您想要混合不同的绘图类型时,这没有意义,因此,如果您想要标准以外的其他东西,则必须指定要使用的图例类型line legend

下面是一个包含一些随机值的缩短示例。

还请注意,这\addlegendentry并不适用于紧接在它之前的\addplot\addlegendimage,只有顺序才重要。即,第一个\addplot/\addlegendimage对应于第一个等等。因此,在这种情况下\addlegendentry,所有s 都是无关紧要的。\addlegendimage

在此处输入图片描述

\documentclass[10pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{semilogxaxis}[
domain=1:10,
xlabel= Pore throat radius {[$\mu$m]},
   ylabel= Normalized frequency,
    ymin=0, ymax=1,
   xmin=0.001,xmax=200,
     xtick align=inside,
    ytick align=inside,
     legend style={at={(0.01,0.98)},font=\footnotesize,anchor=north west, draw=none, fill=none},
     ]
     
 \addplot[
    ybar interval, mark=none, red, fill opacity=0.1, fill=red,
        ybar interval legend  % <-- added this
       ] {rnd};
  \label{plot_one}
\addplot [mark=none, black, thick, dashed] {rnd};
    \label{plot_three}

\addlegendentry{$PSM$}
\addlegendentry{$\min r_{\mathrm{throat}}$}
\end{semilogxaxis}
\end{tikzpicture}
\end{document}

相关内容