# How to plot BER Vs SNR of a received signal

I am using USRP to transmit and received MIMO frames similar to Wi-Fi standard that I created on my own. After receiving the signal, it is processed as described in the standard.

While I plot the QPSK constellation points after frequency and phase correction, I have a plot (shown above) which is noisy. Now I want to plot (BER Vs SNR). I know that we can calculate BER as: (Error Bits/Total No. of bits). But I am not sure how to calculate SNR from these complex symbols.

What I understand from online materials is that SNR is the noise variance that is estimated from around the constellation points (maybe some distance/deviation measurement form the true point. Or its is given by Eb/N0, where Eb is the energy of bits received and N0 is the noise. The question might be very silly, what I do not understand is how I should find Eb and No from these complex received values that is plotted on a constellation diagram. I am doing all the coding in python.

From the plot it seems the transmitted QAM points are $$(0.5, 0.5),(-0.5,0.5),(-0.5,-0.5),(0.5,-0.5)$$, and if you can model your comm system as just AWGN channel, then your signal amplitude will just be $$\sqrt{0.25+0.25} = \sqrt{0.5}$$ and hence signal power will be $$0.5$$. In doing so, I have assumed all 4 QAM symbols equiprobable.