Hey Dilawar,

thanks for the hint with lualatex, it's actually significantly faster:

With filtering (dataset changed a bit from the one I used before)
- pdflatex: 80s
- lualatex: 20s

Without filtering (i.e. I split the CSV file before):
- pdflatex: 2s
- lualatex: 2s (generally a bit slower than pdflatex here)

I don't think it's the size of the dataset, but the filtering, especially 
because I apply four filters.

Another idea might be use use the `shell` functionality of pgfplots to have an 
external program filter the rows. Or just live with it and split up the csv 
before latex.

Best,
Florian


Am 30.10.18 um 11:44 schrieb Dilawar Singh:
> Hi Florian
> 
> I have used pgfplots with lualatex/gnuplot with much larger dataset. pdflatex
> runs out of memory pretty soon on large dataset. It is PROBABLY slower than
> lualatex. You can checkout the generated images and scripts to generate them
> here.
> 
>    
> https://github.com/dilawar/SinghAndBhalla_CaMKII_SubunitExchange_2018/tree/master/PaperFigures
> 
> Moreover, I use `gnuplot` with its 'every' keyword which is very helpful if 
> you
> need not plot every datapoint. In the example below, I plot every 10th point. 
> If
> you need to plot every point, then would  be of no help.
> 
>    \begin{tikzpicture}[scale=1]
>        \begin{axis}[ xlabel=xlabel,ylabel=ylabel ]
>            \addplot [color=blue] gnuplot [ raw gnuplot ] {
>                use datafile separator ",";
>                plot "data.csv" using 2:3 with lines every 10
>            };
>        \end{axis}
>    \end{tikzpicture}
> 
> The learning curve was bit steep for me but it paid well.
> cheers,
>    Dliawar
> 
> On Mon, Oct 29, 2018 at 02:26:12PM +0100, Florian Lindner wrote:
>> Hey,
>>
>> unfortunately I got to walk away from using pgfplots like that again. It's 
>> just to slow.
>>
>> I have a document with nothing but 2 groupplots with 2 graphs and 4 or 5 
>> addplots each.
>>
>> All are plot from the same CSV file with 3600 lines, which is filtered by 3 
>> onlyif commands to 50 data points per addplot.
>>
>> On my machine pdflatex on that documents take 95s. (CPU is i5 @ 1.9 GHz, 
>> SSD).
>>
>> So I will split up data in chunks of CSV files before plotting.
>>
>> Best,
>> Florian
>>
>> Am 25.10.18 um 10:13 schrieb Florian Lindner:
>>> Hi,
>>>
>>> ok, I see the issue.
>>>
>>> One other thing. I get tons of messages like
>>>
>>> NOTE: coordinate (0.6,0.1) has been dropped because it is unbounded (in x). 
>>> (see also unbounded coords=jump).
>>>
>>> I added filter discard warning=false, so the log output is not cluttered so 
>>> much:
>>>
>>> \pgfplotsset{
>>>   only if/.style 2 args={
>>>     filter discard warning=false,
>>>     x filter/.append code={
>>>       \edef\tempa{\thisrow{#1}}
>>>       \edef\tempb{#2}
>>>       \ifx\tempa\tempb
>>>       \else
>>>       \def\pgfmathresult{NaN}
>>>       \fi
>>>     },
>>>   },
>>> }
>>>
>>> (so this message was less of a question, more of documentation)
>>>
>>> Best Regards,
>>>
>>> Florian
>>>
>>>
>>>
>>> Am 24.10.18 um 20:29 schrieb Stefan Pinnow:
>>>> Hi Florian,
>>>>
>>>> I think there was already a discussion about an inclusion of such a 
>>>> feature. I
>>>> think the conclusion was that it is not a trivial task, because the 
>>>> elements
>>>> to filter could be of numerical or non-numerical type, and the data could 
>>>> come
>>>> from a table with and without headers. And many, many more things need to 
>>>> be
>>>> considered.
>>>>
>>>> Thus I don't have much hope that Christian -- the developer -- will find a
>>>> "global" solution to this problem in the near future. But to keep track of
>>>> that, consider adding a feature request to the PGFPlots Tracker
>>>>     <https://sourceforge.net/p/pgfplots/feature-requests/>
>>>> if there isn't already one in for that feature.
>>>>
>>>>
>>>> Best regards,
>>>> Stefan
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: Florian Lindner [mailto:mailingli...@xgm.de]
>>>>> Sent: Wednesday, October 24, 2018 5:34 PM
>>>>> To: Stefan Pinnow
>>>>> Cc: pgfplots-features@lists.sourceforge.net
>>>>> Subject: Re: [Pgfplots-features] Filter data before plotting
>>>>>
>>>>> Hi Stefan,
>>>>>
>>>>> thanks for that link, works like a charm. I renamed it to "only if" for
>>>>> brevity.
>>>>>
>>>>> Still, I think that this is a worthy feature for inclusion into pgfplot,
>>>>> don't?
>>>>>
>>>>> Best Thanks,
>>>>> Florian
>>>>>
>>>>> Am 23.10.18 um 17:36 schrieb Stefan Pinnow:
>>>>>> Hello Florian,
>>>>>>
>>>>>> this is already possible with a minor modification of the code.
>>>>>> Have a look at
>>>>>>     <https://tex.stackexchange.com/a/342529/95441>
>>>>>> I am pretty sure that this question was also already there for `discard
>>>>> if'
>>>>>> but after a quick search I couldn't find the answer.
>>>>>>
>>>>>> But I think you already know what needs to be done to combine/"append"
>>>>>> filters ;)
>>>>>>
>>>>>>
>>>>>> Best regards,
>>>>>> Stefan
>>>>>>
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Florian Lindner [mailto:mailingli...@xgm.de]
>>>>>>> Sent: Tuesday, October 23, 2018 11:10 AM
>>>>>>> To: pgfplots-features@lists.sourceforge.net
>>>>>>> Subject: [Pgfplots-features] Filter data before plotting
>>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> it seems to be common demand to filter data that is to be plotted.
>>>>>>>
>>>>>>> As an example, you have a table:
>>>>>>>
>>>>>>> |   h | Model | Testset | Result |
>>>>>>> |-----+-------+---------+--------|
>>>>>>> |   1 | A     | X       |    0.1 |
>>>>>>> | 0.5 | A     | X       |    0.2 |
>>>>>>> | 0.2 | A     | X       |    0.3 |
>>>>>>> |   1 | B     | X       |   0.11 |
>>>>>>> | 0.5 | B     | X       |   0.12 |
>>>>>>> | 0.2 | B     | X       |   0.13 |
>>>>>>> |   1 | B     | Y       |    0.1 |
>>>>>>> | 0.5 | B     | Y       |   0.12 |
>>>>>>> | 0.2 | B     | Y       |    0.1 |
>>>>>>>
>>>>>>> Now you want to plot all results (x = h, y = Result) for Model=B,
>>>>>>> Testset=Y.
>>>>>>>
>>>>>>> There are some code snippets, like:
>>>>>>>
>>>>>>> https://tex.stackexchange.com/questions/66640/how-can-i-filter-select-
>>>>>>> data-float-text-from-a-table-and-plot-it
>>>>>>> https://tex.stackexchange.com/questions/98003/filter-rows-from-a-table
>>>>>>>
>>>>>>> but they only allow to filter for one criteria.
>>>>>>>
>>>>>>> As far as I see, pgfplots already have a number of
>>>>> filtering/restrictions
>>>>>>> possiblilities, but they all act on coordinates only.
>>>>>>>
>>>>>>> Or is there something like \addplot[restrict={Model==B and Testset=Y},
>>>>>>> x=h, y=Result] {my_data.csv}; ?
>>>>>>>
>>>>>>> What would be the official way of doing that?
>>>>>>>
>>>>>>> Best Thanks,
>>>>>>>
>>>>>>> Florian Lindner
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Pgfplots-features mailing list
>>>>>>> Pgfplots-features@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/pgfplots-features
>>>>>>
>>>
>>>
>>> _______________________________________________
>>> Pgfplots-features mailing list
>>> Pgfplots-features@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/pgfplots-features
>>>
>>
>>
>> _______________________________________________
>> Pgfplots-features mailing list
>> Pgfplots-features@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/pgfplots-features


_______________________________________________
Pgfplots-features mailing list
Pgfplots-features@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pgfplots-features

Reply via email to