Today I am playing with Python and Matplotlib. In BPQ32 you have the option to save the Most Heard list (MH) when you close BPQ32. This contains a lot of data that you can use. Above I made a plot of the received stations and the number of packets I received at 14.1022Mhz + 1000Hz at 300Baud. Now I am not a world programmer, so this could probably be easier or different. Below the script I have written and used.
#!/usr/bin/python3
import re, csv, zlib
import matplotlib.pyplot as plt
import numpy as np
#First get the data form the right port. 14.1022Mhz 300 Baud HF Packet
port4 = []
with open("MHSave.txt") as f:
found_port4 = False
for line in f:
if line.startswith("Port:4"):
found_port4 = True
if found_port4:
if line.startswith("Port:5"):
break
else:
mod_string = line.replace('||', '')
mod_strings = re.sub("via.*$", "", mod_string)
port4.append(mod_strings.rstrip('\n'))
with open('port4.txt', 'w') as fout:
fout.writelines("\n".join(port4[1:]))
#print("\n".join(port4))
# Convert it to a csv file
with open('port4.txt', 'r') as in_file:
lines = in_file.read().splitlines()
stripped = [line.replace(","," ").split() for line in lines]
grouped = zip(*[stripped]*1)
with open('port4.csv', 'w') as out_file:
writer = csv.writer(out_file)
writer.writerow(('Epoch', 'Pack-rev', 'Call', 'Month', 'Day', 'Time'))
for group in grouped:
writer.writerows(group)
# Matplotlib create a nice Plot of the received calls
filename = 'port4.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
#Get Packets and Calls received
packs, calls = [], []
for row in reader:
pack = int(row[1])
call = str(row[2])
packs.append(pack)
calls.append(call)
x = np.arange(len(calls))
fig, ax = plt.subplots()
ax.barh(x, packs, align='center')
ax.set_title("Call and Packets received on PI1LAP")
ax.set_xlabel('Received Packets')
ax.set_ylabel('Station Callsigns')
ax.set_xticks(packs, minor=True)
ax.set_yticks(x)
ax.set_yticklabels(calls)
plt.tight_layout()
plt.show()

