I need to display the labels in AgentTypesS column in my barchart. This is an excerpt from my .csv file (Yes, it is an uneven file)
AgentTypesL, OriginalL, MergedL, DifferenceL, AgentTypesS, OriginalS, MergedS, DifferenceS
m_snc_03, 0.0228482697, 0.0113504075, 0.0114978622, ms03, 0.0228482697, 0.0229856024, -0.0001373327
m_snc_47, 0.0237355812, 0.0101862631, 0.0135493181, ms47, 0.0237355812, 0.0239959586, -0.0002603774
m_snc_811, 0.0244010648, 0.0110593714, 0.0133416934, ms811, 0.0244010648, 0.0242485476, 0.0001525172
m_snc_1215, 0.0232919255, 0.0264842841, -0.0031923586
This is what my script looks like at the moment.
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\pgfplotstableread[col sep=comma]{EvalSummaryIndiv.csv}\datatable
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar, %
height=8 cm, %
ymin=-0.010,
ymax=0.010,
width=\textwidth, %
scaled ticks=false, %
bar width=0.1cm, %
xlabel={Agent categories}, %
xlabel style={yshift=2ex}, %
xtick=data, %
%xticklabel=\empty, %
xticklabel style={yshift=20ex},
xticklabels from table={EvalSummaryIndiv.csv}{AgentTypesS}{col sep=comma},
% error
ylabel={Proportion of agents}, %
ytick={-0.05,-0.002,-0.0005,0,0.0005,0.002,0.05}, %
yticklabel style = {font=\tiny,xshift=0.5ex, %
/pgf/number format/.cd, %
fixed, %
%fixed zerofill, %
precision=4, %
/tikz/.cd},
legend style={legend pos=north west,font=\small},%
ymajorgrids=true,%
grid style=dashed,%
enlargelimits=false,%
] %
\addplot[unbounded coords=jump, color=black,fill=blue!60!white]%
table[
x = AgentTypesS, %error
y index={7},%
col sep=comma%
]%
{\datatable};
\legend{Difference between original and merged}%
\end{axis} %
\end{tikzpicture}%
\end{document}
When I compile above script I get below 2 errors.
! Package pgfplots Error: Sorry, could not retrieve column
'{AgentTypesS}{col sep=comma}' from table 'EvalSummaryIndiv.csv'.
Please check spelling (or introduce name aliases)..PGF Math: Could not parse input 'ms03' as a floating point number, sorry. The unreadable part was near 'ms03'.. {\datatable};
What is the reason for this erro? How do I fix the script to display the values under AgentTypesS as x axis labels?
Best Answer
I don't think that it is possible to have an "unbalanced"/uneven file so you need to fill it up at least with
NaN
s. But also then you will receive an error message when you want to usex=AgentTypesS
. To work around this, just usex expr=\coordindex
which will result in the line number. This is given to the axisxtick=data
and withxtickslabels from table
you will finally replace the\coordindex
with the entries of the chosen column.Please note that I have removed some of your code that is not relevant to the question and that I have changed the y limits, so that one is able to see the otherwise very small bars which could be misinterpreted as dots.