Рассмотрим следующий MWE:
\documentclass[%
12pt,
journal,
twoside,
draftcls,
letterpaper,
]{IEEEtran}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\usetikzlibrary{intersections} %% named intersections "I do not know the key '/tikz/name path global'"
\begin{document}
\pgfplotstableread[col sep=&,row sep=\\]{
0.0159779999812599 & 0.00398599999607541 \\
0.0240009999834001 & 0.00802300000214018 \\
0.0240489999996498 & 4.80000162497163e-05 \\
0.0280280000006314 & 0.00397900000098161 \\
}\mytable
\begin{tikzpicture}
\begin{scope}
\begin{axis}[
title={\small my data},
title style={at={(0.5,0.9)},anchor=center},
clip=true,
axis x line=middle,
axis y line=middle,
y axis line style=-,
xmin = 2e-3,
xmax = 38e-3,
ymin = 0,
ymax = 1.5,
xlabel={$t$\,[ms]},
xlabel style={at={(axis description cs:1.01,+0.0)},anchor=west},
ylabel={}, %{$U$\,[V]},
ylabel style={at={(axis description cs:-0.02,1.01)},anchor=south},
xtick=data,
scaled x ticks=base 10:3,
xtick scale label code/.code={},
x tick label style={
rotate=-45,
anchor=west,
/pgf/number format/fixed,
/pgf/number format/fixed zerofill,
/pgf/number format/precision=3,
},
ymajorticks=false,
yminorticks=false,
tick label style={font=\small,},
legend cell align=left,
legend pos=outer north east,
]
\addplot[
name path global=afunc,
ycomb,
draw=black,
% opacity=0.2, % global
mark=*, mark options={
draw=black,
fill=black,
opacity=0.2, % on mark
},
line width=2pt,
]
table[x index = 0,y expr=1] \mytable ;
\end{axis}
\end{scope}
\end{tikzpicture}
\end{document}
При использовании кода в текущем виде evince
PDF-файл отображается следующим образом (кликните для просмотра изображения в полном размере):
При включенной непрозрачности «% global» PDF-файл отображается следующим образом:
... однако мне нужно, чтобы «импульсы» были прозрачными, чтобы они приобретали более интенсивный цвет при наложении, а ни на одном из изображений выше этого не видно: глобальный импульс, ну, глобальный, а «локальный», примененный к стилю отметки, похоже, игнорируется?
Также, есть ли способ сделать так, чтобы отметки (круги) импульсов были полностью заполнены? (если внимательно присмотреться к полноразмерным изображениям, то кажется, что внутри есть отверстие)
Есть ли способ добиться того, чего я хочу? В файле журнала говорится:
Пакет: pgfplots 2011/12/29 v1.5.1 (git show 1.5.1-4-g53e640f )
решение1
Ну, я придумал своего рода хак: сначала я попробовал ybar
style, который в чем-то похож, но, похоже, он тоже применяет непрозрачность/прозрачность ко всему графику, а не к отдельным столбцам/линиям.
Поэтому я попробовал пройтись по данным таблицы и нарисовать отдельные линии с непрозрачностью — и, наконец, это, кажется, сработало; соответствующие изменения в приведенном выше MWE следующие:
...
\usepackage{pgfplotstable}
...
]
\def\opac{0.4}
\addplot[
name path global=afunc,
only marks, %ycomb,
draw=none, %black,
%opacity=\opac, % global
mark=*, mark options={
draw=none, %black,
%fill=black,
opacity=\opac, % on mark; both stroke and fill (and stroke will overlap fill - twice the opacity!? even with draw=none?)
},
%line width=2pt, % also changes the line around the mark!
]
table[x index = 0,y expr=1] \mytable ;
% \addplot[
% name path global=afuncb,
% ybar,
% bar width=2pt,
% %fill=black,
% %draw=none,
% opacity=0.4,
% ]
% table[x index = 0,y expr=1] \mytable ;
\pgfplotstableforeachcolumnelement{0}\of\mytable\as\cx{%
% \node{I have now cell element ‘\cx’ at row index ‘\pgfplotstablerow’;\par};
\edef\temp{ %
\noexpand\draw[%
line width=2pt, %semithick,
draw=black,%
fill=none,%
opacity=\opac,%
] ({axis cs:\cx,0}) -- ({axis cs:\cx,1}); %
}
\temp
}
\end{axis}
...
... и вывод такой:
Я оставил стиль "только отметки" просто для более легкого визуального сравнения наложенного цвета. Единственное, что меня сейчас беспокоит, это видимая обводка вокруг круглых отметок, но это неважно...