That's actually the expected behaviour for your current setup. When you only use the first sample in every 100 you read, this corresponds to a subsampling of the data. In the case of EMG data that works well due to the characteristics of the data.
However in the ECG one is expecting for example to see a sharp peak appearing periodically, which will likely be shaved off when the 99 remaining frames are discarded.
This explains why a loop acquiring 1 frame at the time from the device provides much better results than retrieving a single frame in each batch of 100.
As you have highlights, acquiring a single frame at a time leads to performance issues in live mode. To overcome this issue in the visualisation, you'll really need to plot more than 1/100 samples.
You can try to acquire 10 frames at a time and plot the first, acquire the 100 frames and plot 1 every 10 frames (e.g. 1, 10, 20, ...); the best is really to try out a few variants.
The BITalino Team