Discrete wavelet transform; how to interpret approximation and detail coefficients?
Wavelet transforms can be more difficult to interpret than FFT at face value due to the various representations, nomenclature and output formats. I had to study more than 15 resources to get a good sense of the variety and which one is used by Pywavelets (which does not provide much theory or explanation in its documentation).

In order to grasp the meaning of cD and cA coefficients, it is helpful to run through a basic example wavelet transform calculation.
Here's a simple step-by-step calculation of what happens in a multi-level DWT (your example is basically the first level). In this representation, they concatenate cA and cD coefficients side by side.

When running DWT using a specific basis function, the signal is fed through (inner product with) a high pass filter (difference filter) and a low pass filter (smoothing / averaging filter), each of which is unique to the wavelet basis function.

For 'db2', the high/ low pass filtering each has two terms, and occurs with a step size (stride) of 2, therefore, after the filtering is completed, you also get a downsampling by 2 of the original signal. Actual length will depend on the filter length and the signal extension mode.
The high pass filtered result gives you the cD coefficients.
The low pass filtered result gives you the cA coefficients.

In your example, each of the 48 cD and 48 cA coefficients corresponds to 2 of the original 96 data points.
Therefore, to plot the cA and cD coefficients in time, just reduce time resolution by 2.

Hope this answers your question, if not, here're some more resources:


This has some simple equations and intuitive comparisons to FFT
This has some nice graphical representations and color coding to explain multi-level DWT
Another guide with detailed explanation and illustrations