import matplotlib.pyplot as plt
import numpy as np

codec2_modes = {
    'datac4': {
        'min_snr': -4,
        'bit_rate': 87,  # Bit rate in bits per second
        'bandwidth': 250,  # Bandwidth in Hz
    },
    'data_ofdm_500': {
        'min_snr': 1,
        'bit_rate': 276,
        'bandwidth': 500,
    },
    'datac1': {
        'min_snr': 5,
        'bit_rate': 980,
        'bandwidth': 1700,
    },
    #'datac2000': {
    #    'min_snr': 7.5,
    #    'bit_rate': 1280,
    #    'bandwidth': 2000,
    #},
    'data_ofdm_2438': {
        'min_snr': 8.5,
        'bit_rate': 1830,
        'bandwidth': 2438,
    },
}


# Extracting data from the dictionary
snr_values = [info['min_snr'] for info in codec2_modes.values()]
bit_rates = [info['bit_rate'] for info in codec2_modes.values()]
bandwidths = [info['bandwidth'] for info in codec2_modes.values()]
modes = list(codec2_modes.keys())  # Get the mode names



# Plot bit/s vs SNR
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.scatter(snr_values, bit_rates, color='b')
for i, txt in enumerate(modes):
    plt.annotate(txt, (snr_values[i], bit_rates[i]))  # Annotate each point with mode name
plt.plot(snr_values, bit_rates, '--', color='b')

plt.yscale("log")

plt.xlabel('SNR (dB)')
plt.ylabel('Bit/s')
plt.title('Bit Rate vs SNR')
plt.grid(True)

# Plot bandwidth vs SNR
plt.subplot(1, 2, 2)
plt.scatter(snr_values, bandwidths, color='g')
for i, txt in enumerate(modes):
    plt.annotate(txt, (snr_values[i], bandwidths[i]))  # Annotate each point with mode name
plt.plot(snr_values, bandwidths, '--', color='g')
plt.xlabel('SNR (dB)')
plt.ylabel('Bandwidth (Hz)')
plt.title('Bandwidth vs SNR')
plt.grid(True)

# Show plot
plt.tight_layout()
plt.show()
