User Tools

Site Tools


links:band_plan_with_swr

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
links:band_plan_with_swr [2024/11/21 21:40] – created - external edit 127.0.0.1links:band_plan_with_swr [2024/12/08 22:47] (current) va7fi
Line 3: Line 3:
 {{  bandplanwithswr.png?400|}} {{  bandplanwithswr.png?400|}}
 This python script does two things: This python script does two things:
-  - It reads all .asd output files from the Rig Expert that are placed in the same folder as this script and calculates the VSWR as a function of the frequency.+  - It reads all ''.asd'' output files from the Rig Expert that are placed in the same folder as this script and calculates the VSWR as a function of the frequency.
   - It recreates the band plan for all bands from 2200m to 70cm and adds VSWR graphs on top of it.   - It recreates the band plan for all bands from 2200m to 70cm and adds VSWR graphs on top of it.
  
Line 11: Line 11:
 The VHF and UHF band plan information is for British-Columbia and was taken from https://bcarcc.org/ The VHF and UHF band plan information is for British-Columbia and was taken from https://bcarcc.org/
  
-Here's the {{canbandplan.pdf |output of my G5RV and GP9}} so far:+Here's the {{canadianbandplan.pdf |output of my G5RV and GP9}} so far:
   * The top of the band plan graph corresponds to SWR = 1:1, where the first dotted horizontal line is.   * The top of the band plan graph corresponds to SWR = 1:1, where the first dotted horizontal line is.
   * For HF, I also added a horizontal line at SWR = 3:1, which is where my internal tuner can reach.   * For HF, I also added a horizontal line at SWR = 3:1, which is where my internal tuner can reach.
Line 17: Line 17:
   * The red graph is the SWR curve.  If it's not showing, it's because it's above 10:1   * The red graph is the SWR curve.  If it's not showing, it's because it's above 10:1
  
-<fc #ff0000>Update (Jan 30)</fc>:don't think I'll do much more work to clean up the code so here it is:+<fc #ff0000>Update (Dec 8, 2024)</fc>:added the 630m band and updated the 60m band plan
  
 <hidden Python Code> <hidden Python Code>
Line 27: Line 27:
  
 License: License:
-   This script by Patrick Truchon <https://ptruchon.pagekite.me> is licensed+   This script by Patrick Truchon <va7fi@rbox.me> is licensed
    under a Creative Commons Creative Commons Attribution-Share Alike 4.0    under a Creative Commons Creative Commons Attribution-Share Alike 4.0
    Unported License.  <http://creativecommons.org/licenses/by-sa/4.0>.    Unported License.  <http://creativecommons.org/licenses/by-sa/4.0>.
Line 37: Line 37:
       * Improve the scripts, and release the improvements to the public, so       * Improve the scripts, and release the improvements to the public, so
         that the whole community benefits.         that the whole community benefits.
-   +
    Provided that you:    Provided that you:
      * Attribute the work to me by linking to      * Attribute the work to me by linking to
-       <https://ptruchon.pagekite.me>+       <https://scarcs.ca/links/band_plan_with_swr>
      * Distribute any derivative work under the same license.      * Distribute any derivative work under the same license.
  
Line 56: Line 56:
 was taken from: was taken from:
    https://bcarcc.org/    https://bcarcc.org/
 +
 +Versions
 +  * 2021.01.30
 +  * 2024.12.08 (added 630m and updated 60m band plan)
 """ """
  
 +import os
 +import json
 import numpy as np import numpy as np
 import matplotlib.pyplot as plt import matplotlib.pyplot as plt
 import matplotlib.ticker as mtick import matplotlib.ticker as mtick
 from matplotlib.backends.backend_pdf import PdfPages from matplotlib.backends.backend_pdf import PdfPages
-import json 
-import os 
  
 # The output will be a multipage PDF document: # The output will be a multipage PDF document:
 pdf_pages = PdfPages('CanadianBandPlan.pdf') pdf_pages = PdfPages('CanadianBandPlan.pdf')
-TITLE = 'Canadian Band Plan with VSWR  (v.2021.01.30)'+TITLE = 'Canadian Band Plan with VSWR  (v.2024.12.08)'
  
 #### Import SWR Data from Rig Expert .asd files #### #### Import SWR Data from Rig Expert .asd files ####
 # Make a list of the .asd files in current folder and sort them by name. # Make a list of the .asd files in current folder and sort them by name.
 PATH = r"./" PATH = r"./"
-DIR = os.listdir( PATH )+DIR = os.listdir(PATH)
 FILES = [] FILES = []
 for file in DIR: for file in DIR:
-   if file.endswith(".asd"): +    if file.endswith(".asd"): 
-       FILES = FILES + [file]+        FILES = FILES + [file]
 FILES.sort() FILES.sort()
  
Line 84: Line 88:
 REACTANCE = [] REACTANCE = []
 for file in FILES: for file in FILES:
-   with open (file, "r", encoding="utf-8") as raw_file: raw=json.load(raw_file) +    with open(file, "r", encoding="utf-8") as raw_file: 
-   SIZE = len(raw['Measurements']) +        raw = json.load(raw_file) 
-   FREQ = [raw['Measurements'][i]['fq'] for i in range(0, SIZE)] + FREQ +    SIZE = len(raw['Measurements']) 
-   RESISTANCE = [raw['Measurements'][i]['r'] for i in range(0, SIZE)] \+    FREQ = [raw['Measurements'][i]['fq'] for i in range(0, SIZE)] + FREQ 
 +    RESISTANCE = [raw['Measurements'][i]['r'] for i in range(0, SIZE)] \
                + RESISTANCE                + RESISTANCE
-   REACTANCE = [raw['Measurements'][i]['x'] for i in range(0, SIZE)] \+    REACTANCE = [raw['Measurements'][i]['x'] for i in range(0, SIZE)] \
                + REACTANCE                + REACTANCE
  
Line 98: Line 103:
  
 ## Two steps to calculate the VSWR from the Resistance and Reactance: ## Two steps to calculate the VSWR from the Resistance and Reactance:
-# 1) Rho = sqrt( ((R - 50)^2 + X^2)/(R + 50)^2 + X^2) )+# 1) Rho = sqrt( ((R - 50)^2 + X^2)/(R + 50)^2 + X^2))
 RHO = np.sqrt(np.divide(np.square(RESISTANCE - 50) + np.square(REACTANCE), RHO = np.sqrt(np.divide(np.square(RESISTANCE - 50) + np.square(REACTANCE),
-                 np.square(RESISTANCE + 50) + np.square(REACTANCE)))+                        np.square(RESISTANCE + 50) + np.square(REACTANCE)))
  
 # 2) VSWR = (1 + Rho) / (1 - Rho) # 2) VSWR = (1 + Rho) / (1 - Rho)
Line 109: Line 114:
 FREQ = FREQ[np.argsort(FREQ)] FREQ = FREQ[np.argsort(FREQ)]
  
-# Create Horizontal lines at 1, 3, and 10 +# Create Horizontal lines at 1, 3, and 10
 VSWR1 = len(FREQ)*[1]     # y = 1 VSWR1 = len(FREQ)*[1]     # y = 1
 VSWR3 = len(FREQ)*[3]     # y = 3 VSWR3 = len(FREQ)*[3]     # y = 3
Line 129: Line 134:
 label2_y = -0.4     # Centre label label2_y = -0.4     # Centre label
 label3_y = 0.1      # Top label label3_y = 0.1      # Top label
-label4_y = 8.     # Very top band name+label4_y = 8.     # Very top band name
  
 # Vertical Axis Marks # Vertical Axis Marks
Line 137: Line 142:
 ####  FIRST PAGE:  2200m to 20m ####  FIRST PAGE:  2200m to 20m
 # Axes: 7 graphs in a 8.5x11 page. # Axes: 7 graphs in a 8.5x11 page.
-fig, ax = plt.subplots(nrows=7,figsize=(8.5,11))+fig, ax = plt.subplots(nrows=8, figsize=(8.5, 11))
  
 # Title on first [0] graph only # Title on first [0] graph only
Line 143: Line 148:
  
 # Axis labels # Axis labels
-for i in range(0,7): +for i in range(0, 8): 
-   ax[i].set(ylabel='VSWR') # Set x-and y-axis labels +    ax[i].set(ylabel='VSWR') # Set x-and y-axis labels 
-   # SWR Data +    # SWR Data 
-   ax[i].plot(FREQ,VSWR, color=SWRCOLOUR)   # Measured VSWR +    ax[i].plot(FREQ, VSWR, color=SWRCOLOUR)   # Measured VSWR 
-   ax[i].plot(FREQ,VSWR1,ls='--', color='black',linewidth=0.5) # VSWR = 1 +    ax[i].plot(FREQ, VSWR1, ls='--', color='black', linewidth=0.5) # VSWR = 1 
-   ax[i].plot(FREQ,VSWR3,ls='--', color='black',linewidth=0.5) # VSWR = 3+    ax[i].plot(FREQ, VSWR3, ls='--', color='black', linewidth=0.5) # VSWR = 3
  
  
 ### 2200m ### 2200m
 i = 0                       # First graph i = 0                       # First graph
-left = 0.1355               # Left edge +left = 0.1356               # Left edge 
-right = 0.138               # Right edge +right = 0.1379               # Right edge 
-ax[i].set_xlim(left,right)  # Domain +ax[i].set_xlim(left, right)  # Domain 
-ax[i].set_ylim(-1,10)       # Range+ax[i].set_ylim(-1, 10)       # Range
  
 # Frequency labels: # Frequency labels:
Line 171: Line 176:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 2200m'+ax[i].text(left, label4_y, ' 2200m'
-ax[i].text(0.13655,label2_y,'CW', fontsize=7) +ax[i].text(0.13655, label2_y, 'CW', fontsize=7) 
-ax[i].text(0.13747,label2_y,'Digi', fontsize=7) +ax[i].text(0.13747, label2_y, 'Digi', fontsize=7) 
-ax[i].text(0.13765,label2_y ,'QRSS', fontsize=7)+ax[i].text(0.13765, label2_y, 'QRSS', fontsize=7) 
 + 
 +# Axis 
 +ax[i].set_xlim((left, right)) 
 +ax[i].set_xticks(xlabels) 
 +ax[i].set_ylim((-1, 10)) 
 +ax[i].set_yticks(y_ticks) 
 +ax[i].set_xticklabels(xlabels, rotation=20, ha='right'
 + 
 + 
 +### 630m 
 +i = i + 1                       # First graph 
 +left = 0.4716               # Left edge 
 +right = 0.4794               # Right edge 
 +ax[i].set_xlim(left, right)  # Domain 
 +ax[i].set_ylim(-1, 10)       # Range 
 + 
 +# Frequency labels: 
 +x1 = 0.472 
 +x2 = 0.475 
 +x3 = 0.479 
 +xlabels = [x1, x2, x3] 
 + 
 +# Bar Graphs 
 +ax[i].broken_barh([(x1, (x3-x1))], (-1, 2), facecolors=CW) 
 +ax[i].broken_barh([(x2, (x3-x2))], (-1, 1), facecolors=DIGI) 
 + 
 +# Labels 
 +ax[i].text(left, label4_y, ' 630m'
 +ax[i].text(0.4735, label2_y, 'CW', fontsize=7) 
 +ax[i].text(0.4768, label2_y, 'Digi', fontsize=7)
  
 # Axis # Axis
Line 185: Line 220:
  
 ### 160m ### 160m
-i = 1 +i = i + 
-left = 1.775 +left = 1.79 
-right = 2.025 +right = 2.01 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 204: Line 239:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 160m'+ax[i].text(left, label4_y, ' 160m'
-ax[i].text(1.817,label2_y,'CW', fontsize=7) +ax[i].text(1.817, label2_y, 'CW', fontsize=7) 
-ax[i].text(1.915,label2_y,'LSB', fontsize=7) +ax[i].text(1.915, label2_y, 'LSB', fontsize=7) 
-ax[i].text(1.801,label1_y ,'Digi', fontsize=7)+ax[i].text(1.801, label1_y, 'Digi', fontsize=7)
  
 # Axis # Axis
Line 219: Line 254:
  
 #### 80m #### 80m
-i = 2 +i = i + 1 
-left = 3.450 +left = 3.475 
-right = 4.050 +right = 4.025 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 243: Line 278:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 80m'+ax[i].text(left, label4_y, ' 80m'
-ax[i].text(3.536,label2_y,'CW', fontsize=7) +ax[i].text(3.536, label2_y, 'CW', fontsize=7) 
-ax[i].text(3.592,label2_y ,'D', fontsize=7) +ax[i].text(3.592, label2_y, 'D', fontsize=7) 
-ax[i].text(3.725,label2_y,'LSB', fontsize=7) +ax[i].text(3.725, label2_y, 'LSB', fontsize=7) 
-ax[i].text(3.839,label2_y ,'TV', fontsize=7) +ax[i].text(3.839, label2_y, 'TV', fontsize=7) 
-ax[i].text(3.91,label2_y,'LSB', fontsize=7)+ax[i].text(3.91, label2_y, 'LSB', fontsize=7)
  
 # Axis # Axis
Line 260: Line 295:
  
 # 60m # 60m
-i = 3 +i = i + 1 
-left = 5.325 +left = 5.327 
-right = 5.411 +right = 5.409 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
-x1 = 5.3306 +x1 = 5.3305 
-x2 = 5.3466 +x2 = 5.3465 
-x3 = 5.3571 +x3 = 5.3515 
-x4 = 5.3716 +x4 = 5.3715 
-x5 = 5.4036 +x5 = 5.4035 
-xlabels = [x1, x1 + 0.0028, x2, x2 + 0.0028, x3, x3 + 0.0028+xlabels = [x1, x1 + 0.0030, x2, x2 + 0.0030, x3, x3 + 0.0150
-           x4, x4 + 0.0028, x5, x5  + 0.0028]+           x4, x4 + 0.0030, x5, x5  + 0.0030]
  
 # Bar Graphs # Bar Graphs
-ax[i].broken_barh([(x1, 0.0028)], (0.33, 0.67), facecolors=CW)        +ax[i].broken_barh([(x1, 0.0030)], (0.33, 0.67), facecolors=CW) 
-ax[i].broken_barh([(x1, 0.0028)], (-0.33, 0.67), facecolors=PHONE) +ax[i].broken_barh([(x1, 0.0030)], (-0.33, 0.67), facecolors=PHONE) 
-ax[i].broken_barh([(x1, 0.0028)], (-1, 0.67), facecolors=DIGI) +ax[i].broken_barh([(x1, 0.0030)], (-1, 0.67), facecolors=DIGI) 
-ax[i].broken_barh([(x2, 0.0028)], (0.33, 0.67), facecolors=CW) +ax[i].broken_barh([(x2, 0.0030)], (0.33, 0.67), facecolors=CW) 
-ax[i].broken_barh([(x2, 0.0028)], (-0.33, 0.67), facecolors=PHONE) +ax[i].broken_barh([(x2, 0.0030)], (-0.33, 0.67), facecolors=PHONE) 
-ax[i].broken_barh([(x2, 0.0028)], (-1, 0.67), facecolors=DIGI) +ax[i].broken_barh([(x2, 0.0030)], (-1, 0.67), facecolors=DIGI) 
-ax[i].broken_barh([(x3, 0.0028)], (0.33, 0.67), facecolors=CW) +ax[i].broken_barh([(x3, 0.0150)], (0.33, 0.67), facecolors=CW) 
-ax[i].broken_barh([(x3, 0.0028)], (-0.33, 0.67), facecolors=PHONE) +ax[i].broken_barh([(x3, 0.0150)], (-0.33, 0.67), facecolors=PHONE) 
-ax[i].broken_barh([(x3, 0.0028)], (-1, 0.67), facecolors=DIGI) +ax[i].broken_barh([(x3, 0.0150)], (-1, 0.67), facecolors=DIGI) 
-ax[i].broken_barh([(x4, 0.0028)], (0.33, 0.67), facecolors=CW) +ax[i].broken_barh([(x4, 0.0030)], (0.33, 0.67), facecolors=CW) 
-ax[i].broken_barh([(x4, 0.0028)], (-0.33, 0.67), facecolors=PHONE) +ax[i].broken_barh([(x4, 0.0030)], (-0.33, 0.67), facecolors=PHONE) 
-ax[i].broken_barh([(x4, 0.0028)], (-1, 0.67), facecolors=DIGI) +ax[i].broken_barh([(x4, 0.0030)], (-1, 0.67), facecolors=DIGI) 
-ax[i].broken_barh([(x5, 0.0028)], (0.33, 0.67), facecolors=CW) +ax[i].broken_barh([(x5, 0.0030)], (0.33, 0.67), facecolors=CW) 
-ax[i].broken_barh([(x5, 0.0028)], (-0.33, 0.67), facecolors=PHONE) +ax[i].broken_barh([(x5, 0.0030)], (-0.33, 0.67), facecolors=PHONE) 
-ax[i].broken_barh([(x5, 0.0028)], (-1, 0.67), facecolors=DIGI)+ax[i].broken_barh([(x5, 0.0030)], (-1, 0.67), facecolors=DIGI)
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 60m'+ax[i].text(left, label4_y, ' 60m'
-ax[i].text(5.331,label3_y+0.19,'CW', fontsize=5) +ax[i].text(5.331, label3_y+0.19, 'CW', fontsize=5) 
-ax[i].text(5.331,label2_y+0.13,'USB', fontsize=5) +ax[i].text(5.331, label2_y+0.13, 'USB', fontsize=5) 
-ax[i].text(5.331,label1_y-0.1,'Digi', fontsize=5)+ax[i].text(5.331, label1_y-0.1, 'Digi', fontsize=5)
  
 # Axis # Axis
Line 308: Line 343:
  
 # 40m # 40m
-i = 4 +i = i + 1 
-left = 6.975 +left = 6.985 
-right = 7.325 +right = 7.315 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 333: Line 368:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 40m'+ax[i].text(left, label4_y, ' 40m'
-ax[i].text(7.015,label2_y,'CW', fontsize=7) +ax[i].text(7.015, label2_y, 'CW', fontsize=7) 
-ax[i].text(7.0355,label1_y,'D', fontsize=7) +ax[i].text(7.0355, label1_y, 'D', fontsize=7) 
-ax[i].text(7.093,label1_y,'Digi', fontsize=7) +ax[i].text(7.093, label1_y, 'Digi', fontsize=7) 
-ax[i].text(7.105,label3_y,'LSB', fontsize=7) +ax[i].text(7.105, label3_y, 'LSB', fontsize=7) 
-ax[i].text(7.167,label2_y,'TV', fontsize=7) +ax[i].text(7.167, label2_y, 'TV', fontsize=7) 
-ax[i].text(7.23,label2_y,'LSB', fontsize=7)+ax[i].text(7.23, label2_y, 'LSB', fontsize=7)
  
 # Axis # Axis
Line 351: Line 386:
  
 # 30m # 30m
-i = 5 +i = i + 1 
-left = 10.095 +left = 10.097 
-right = 10.155 +right = 10.153 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 370: Line 405:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 30m'+ax[i].text(left, label4_y, ' 30m'
-ax[i].text(10.115,label2_y,'CW', fontsize=7) +ax[i].text(10.115, label2_y, 'CW', fontsize=7) 
-ax[i].text(10.1345,label2_y,'Digi', fontsize=7) +ax[i].text(10.1345, label2_y, 'Digi', fontsize=7) 
-ax[i].text(10.1445,label3_y ,'CW', fontsize=7)+ax[i].text(10.1445, label3_y, 'CW', fontsize=7)
  
 # Axis # Axis
Line 385: Line 420:
  
 # 20m # 20m
-i = 6 +i = i + 1 
-left = 13.97 +left = 13.98 
-right = 14.38 +right = 14.37 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 410: Line 445:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 20m'+ax[i].text(left, label4_y, ' 20m'
-ax[i].text(14.033,label2_y,'CW', fontsize=7) +ax[i].text(14.033, label2_y, 'CW', fontsize=7) 
-ax[i].text(14.082,label3_y,'CW', fontsize=7) +ax[i].text(14.082, label3_y, 'CW', fontsize=7) 
-ax[i].text(14.087,label1_y ,'Digi', fontsize=7) +ax[i].text(14.087, label1_y, 'Digi', fontsize=7) 
-ax[i].text(14.17,label2_y,'USB', fontsize=7) +ax[i].text(14.17, label2_y, 'USB', fontsize=7) 
-ax[i].text(14.229,label2_y,'TV', fontsize=7) +ax[i].text(14.229, label2_y, 'TV', fontsize=7) 
-ax[i].text(14.28,label2_y,'USB', fontsize=7)+ax[i].text(14.28, label2_y, 'USB', fontsize=7)
  
 # Axis # Axis
Line 436: Line 471:
 #### SECOND PAGE: 17m - 70cm #### SECOND PAGE: 17m - 70cm
 # Axes # Axes
-fig2, ax = plt.subplots(nrows=7,figsize=(8.5,11))+fig2, ax = plt.subplots(nrows=7, figsize=(8.5, 11))
  
 # Axis labels # Axis labels
-for i in range(0,7): +for i in range(0, 7): 
-   ax[i].set(ylabel='VSWR') # Set x-and y-axis labels +    ax[i].set(ylabel='VSWR') # Set x-and y-axis labels 
-   # SWR Data +    # SWR Data 
-   ax[i].plot(FREQ,VSWR, color=SWRCOLOUR)   # Measured VSWR +    ax[i].plot(FREQ, VSWR, color=SWRCOLOUR)   # Measured VSWR 
-   ax[i].plot(FREQ,VSWR1,ls='--', color='black',linewidth=0.5) # VSWR = 1 +    ax[i].plot(FREQ, VSWR1, ls='--', color='black', linewidth=0.5) # VSWR = 1 
-   ax[i].plot(FREQ,VSWR3,ls='--', color='black',linewidth=0.5) # VSWR = 3+    ax[i].plot(FREQ, VSWR3, ls='--', color='black', linewidth=0.5) # VSWR = 3
  
  
 # 17m # 17m
 i = 0 i = 0
-left = 18.06 +left = 18.062 
-right = 18.18 +right = 18.174 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 469: Line 504:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 17m'+ax[i].text(left, label4_y, ' 17m'
-ax[i].text(18.082,label2_y,'CW', fontsize=7) +ax[i].text(18.082, label2_y, 'CW', fontsize=7) 
-ax[i].text(18.102,label2_y,'Digi', fontsize=7) +ax[i].text(18.102, label2_y, 'Digi', fontsize=7) 
-ax[i].text(18.135,label2_y,'USB', fontsize=7)+ax[i].text(18.135, label2_y, 'USB', fontsize=7)
  
 # Axis # Axis
Line 484: Line 519:
  
 # 15m # 15m
-i = 1 +i = i + 
-left = 20.97 +left = 20.975 
-right = 21.48 +right = 21.475 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 513: Line 548:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 15m'+ax[i].text(left, label4_y, ' 15m'
-ax[i].text(21.03,label2_y,'CW', fontsize=7) +ax[i].text(21.03, label2_y, 'CW', fontsize=7) 
-ax[i].text(21.095,label2_y,'Digi', fontsize=7) +ax[i].text(21.095, label2_y, 'Digi', fontsize=7) 
-ax[i].text(21.13,label2_y,'CW', fontsize=7) +ax[i].text(21.13, label2_y, 'CW', fontsize=7) 
-ax[i].text(21.24,label2_y,'USB', fontsize=7) +ax[i].text(21.24, label2_y, 'USB', fontsize=7) 
-ax[i].text(21.337,label2_y,'TV', fontsize=7) +ax[i].text(21.337, label2_y, 'TV', fontsize=7) 
-ax[i].text(21.39,label2_y,'USB', fontsize=7)+ax[i].text(21.39, label2_y, 'USB', fontsize=7)
  
 # Axis # Axis
Line 531: Line 566:
  
 # 12m # 12m
-i = 2 +i = i + 1 
-left = 24.88 +left = 24.884 
-right = 25 +right = 24.996 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 555: Line 590:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 12m'+ax[i].text(left, label4_y, ' 12m'
-ax[i].text(24.904,label2_y,'CW', fontsize=7) +ax[i].text(24.904, label2_y, 'CW', fontsize=7) 
-ax[i].text(24.9205,label2_y,'Digi', fontsize=7) +ax[i].text(24.9205, label2_y, 'Digi', fontsize=7) 
-ax[i].text(24.93,label3_y,'CW', fontsize=7) +ax[i].text(24.93, label3_y, 'CW', fontsize=7) 
-ax[i].text(24.956,label2_y,'USB', fontsize=7) +ax[i].text(24.956, label2_y, 'USB', fontsize=7) 
-ax[i].text(24.9755,label2_y,'TV', fontsize=7) +ax[i].text(24.9755, label2_y, 'TV', fontsize=7) 
-ax[i].text(24.982,label2_y,'USB', fontsize=7)+ax[i].text(24.982, label2_y, 'USB', fontsize=7)
  
 # Axis # Axis
Line 573: Line 608:
  
 # 10m # 10m
-i = 3+i = i + 1
 left = 27.9 left = 27.9
 right = 29.8 right = 29.8
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 603: Line 638:
  
 # Labels # Labels
-ax[i].text(left,label4_y,' 10m'+ax[i].text(left, label4_y, ' 10m'
-ax[i].text(28.015,label2_y,'CW', fontsize=7) +ax[i].text(28.015, label2_y, 'CW', fontsize=7) 
-ax[i].text(28.1,label1_y,'Digi', fontsize=7) +ax[i].text(28.1, label1_y, 'Digi', fontsize=7) 
-ax[i].text(28.24,label3_y,'CW', fontsize=7) +ax[i].text(28.24, label3_y, 'CW', fontsize=7) 
-ax[i].text(28.2,label1_y,'Beacon', fontsize=7) +ax[i].text(28.2, label1_y, 'Beacon', fontsize=7) 
-ax[i].text(28.301,label1_y,'D', fontsize=7) +ax[i].text(28.301, label1_y, 'D', fontsize=7) 
-ax[i].text(28.47,label2_y,'USB', fontsize=7) +ax[i].text(28.47, label2_y, 'USB', fontsize=7) 
-ax[i].text(28.665,label2_y,'TV', fontsize=7) +ax[i].text(28.665, label2_y, 'TV', fontsize=7) 
-ax[i].text(28.95,label2_y,'USB', fontsize=7) +ax[i].text(28.95, label2_y, 'USB', fontsize=7) 
-ax[i].text(29.39,label2_y,'Sat', fontsize=7) +ax[i].text(29.39, label2_y, 'Sat', fontsize=7) 
-ax[i].text(29.59,label2_y,'FM', fontsize=7)+ax[i].text(29.59, label2_y, 'FM', fontsize=7)
  
 # Axis # Axis
Line 625: Line 660:
  
 # 6m # 6m
-i = 4 +i = i + 1 
-left = 49.7 +left = 49.78 
-right = 54.3 +right = 54.23 
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(-1,10)+ax[i].set_ylim(-1, 10)
  
 # Frequency labels: # Frequency labels:
Line 654: Line 689:
  
 # Label # Label
-ax[i].text(left,label4_y,' 6m') +ax[i].text(left, label4_y, ' 6m') 
-ax[i].text(50.25,label2_y,'USB', fontsize=7) +ax[i].text(50.25, label2_y, 'USB', fontsize=7) 
-ax[i].text(50,label1_y-0.1,'CW', fontsize=5) +ax[i].text(50, label1_y-0.1, 'CW', fontsize=5) 
-ax[i].text(50,label2_y+0.1,'Beac', fontsize=5) +ax[i].text(50, label2_y+0.1, 'Beac', fontsize=5) 
-ax[i].text(50.63,label2_y,'Experimental', fontsize=6) +ax[i].text(50.63, label2_y, 'Experimental', fontsize=6) 
-ax[i].text(51,label3_y,'DX', fontsize=6) +ax[i].text(51, label3_y, 'DX', fontsize=6) 
-ax[i].text(51,label1_y,'CW', fontsize=6) +ax[i].text(51, label1_y, 'CW', fontsize=6) 
-ax[i].text(51.35,label3_y,'FM Simplex', fontsize=7) +ax[i].text(51.35, label3_y, 'FM Simplex', fontsize=7) 
-ax[i].text(51.43,label1_y,'Packet', fontsize=7) +ax[i].text(51.43, label1_y, 'Packet', fontsize=7) 
-ax[i].text(52.2,label2_y,'FM Repeater Input', fontsize=7) +ax[i].text(52.2, label2_y, 'FM Repeater Input', fontsize=7) 
-ax[i].text(53.2,label2_y,'FM Repeater Output', fontsize=7)+ax[i].text(53.2, label2_y, 'FM Repeater Output', fontsize=7)
  
 # Axis # Axis
Line 679: Line 714:
 label2_y = 0.79    # Centre label label2_y = 0.79    # Centre label
 label3_y = 0.88      # Top label label3_y = 0.88      # Top label
-label4_y = 1.92      # Very top band name+label4_y = 1.85      # Very top band name
  
 # 2m  https://wp.rac.ca/144-mhz-2m-page/ # 2m  https://wp.rac.ca/144-mhz-2m-page/
-i = 5+i = i + 1
 left = 143.9 left = 143.9
 right = 148.1 right = 148.1
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(0.7,2.1)+ax[i].set_ylim(0.7, 2.1)
  
 # Frequency labels: # Frequency labels:
-ax[i].text(left,label4_y,' 2m') +ax[i].text(left, label4_y, ' 2m') 
-xlabels= [144, 148] +xlabels = [144, 148]
  
 # Misc # Misc
-ax[i].broken_barh([(144, 0.37 )], (0.70, 0.3), facecolors=MISC) +ax[i].broken_barh([(144, 0.37)], (0.70, 0.3), facecolors=MISC) 
-ax[i].text(144.13,label2_y,'Misc', fontsize=7)+ax[i].text(144.13, label2_y, 'Misc', fontsize=7)
  
 # Digital Group 1 # Digital Group 1
-xlabels= xlabels + [144.370]  +xlabels = xlabels + [144.370] 
-ax[i].broken_barh([(144.37, 0.12 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(144.37, 0.12)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(144.37,label2_y,'Digi', fontsize=7)+ax[i].text(144.37, label2_y, 'Digi', fontsize=7)
  
 # Repeater Group 1 and 2 # Repeater Group 1 and 2
-xlabels= xlabels + [144.51, 145.11] +xlabels = xlabels + [144.51, 145.11]
 ax[i].broken_barh([(144.51, 0.38)], (0.70, 0.3), facecolors=PHONE) ax[i].broken_barh([(144.51, 0.38)], (0.70, 0.3), facecolors=PHONE)
 ax[i].broken_barh([(145.11, 0.38)], (0.70, 0.3), facecolors=PHONE) ax[i].broken_barh([(145.11, 0.38)], (0.70, 0.3), facecolors=PHONE)
-ax[i].text(145.115,label3_y,'R$_1$', fontsize=7) +ax[i].text(145.115, label3_y, 'R$_1$', fontsize=7) 
-ax[i].text(145.115,label1_y,'out', fontsize=7) +ax[i].text(145.115, label1_y, 'out', fontsize=7) 
-ax[i].text(144.515,label3_y,'R$_1$', fontsize=7) +ax[i].text(144.515, label3_y, 'R$_1$', fontsize=7) 
-ax[i].text(144.515,label1_y,'in', fontsize=7) +ax[i].text(144.515, label1_y, 'in', fontsize=7) 
-ax[i].text(145.27,label2_y,'R$_2$ out', fontsize=7) +ax[i].text(145.27, label2_y, 'R$_2$ out', fontsize=7) 
-ax[i].text(144.67,label2_y,'R$_2$ in', fontsize=7)+ax[i].text(144.67, label2_y, 'R$_2$ in', fontsize=7)
 ax[i].broken_barh([(144.59, 0.02)], (0.70, 0.3), facecolors='white') ax[i].broken_barh([(144.59, 0.02)], (0.70, 0.3), facecolors='white')
 ax[i].broken_barh([(145.19, 0.02)], (0.70, 0.3), facecolors='white') ax[i].broken_barh([(145.19, 0.02)], (0.70, 0.3), facecolors='white')
  
 # Digital Repeater Group 1 and 2 # Digital Repeater Group 1 and 2
-xlabels= xlabels + [144.91, 145.51]  +xlabels = xlabels + [144.91, 145.51] 
-ax[i].broken_barh([(144.91, 0.18 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(144.91, 0.18)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].broken_barh([(145.51, 0.18 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(145.51, 0.18)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(144.91,label3_y,'R$_2$', fontsize=7) +ax[i].text(144.91, label3_y, 'R$_2$', fontsize=7) 
-ax[i].text(144.91,label1_y,'in', fontsize=7) +ax[i].text(144.91, label1_y, 'in', fontsize=7) 
-ax[i].text(145.51,label3_y,'R$_2$', fontsize=7) +ax[i].text(145.51, label3_y, 'R$_2$', fontsize=7) 
-ax[i].text(145.51,label1_y,'out', fontsize=7) +ax[i].text(145.51, label1_y, 'out', fontsize=7) 
-ax[i].text(145.01,label3_y,'R$_1$', fontsize=7) +ax[i].text(145.01, label3_y, 'R$_1$', fontsize=7) 
-ax[i].text(145.01,label1_y,'out', fontsize=7) +ax[i].text(145.01, label1_y, 'out', fontsize=7) 
-ax[i].text(145.61,label3_y,'R$_1$', fontsize=7) +ax[i].text(145.61, label3_y, 'R$_1$', fontsize=7) 
-ax[i].text(145.61,label1_y,'in', fontsize=7)+ax[i].text(145.61, label1_y, 'in', fontsize=7)
  
 # Repeater Group 3 # Repeater Group 3
-xlabels= xlabels + [146.02, 146.62]  +xlabels = xlabels + [146.02, 146.62] 
-ax[i].broken_barh([(146.02, 0.36 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(146.02, 0.36)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].broken_barh([(146.62, 0.36 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(146.62, 0.36)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(146.1,label2_y,'R$_3$ in', fontsize=7) +ax[i].text(146.1, label2_y, 'R$_3$ in', fontsize=7) 
-ax[i].text(146.7,label2_y,'R$_3$ out', fontsize=7)+ax[i].text(146.7, label2_y, 'R$_3$ out', fontsize=7)
  
 # Repeater Group 4 # Repeater Group 4
-xlabels= xlabels + [147, 147.6]  +xlabels = xlabels + [147, 147.6] 
-ax[i].broken_barh([(147, 0.38 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(147, 0.38)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].broken_barh([(147.6, 0.38 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(147.6, 0.38)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(147.1,label2_y,'R$_4$ out', fontsize=7) +ax[i].text(147.1, label2_y, 'R$_4$ out', fontsize=7) 
-ax[i].text(147.7,label2_y,'R$_4$ in', fontsize=7)+ax[i].text(147.7, label2_y, 'R$_4$ in', fontsize=7)
  
 # Digital Simplex # Digital Simplex
-xlabels= xlabels + [145.71]  +xlabels = xlabels + [145.71] 
-ax[i].broken_barh([(145.71, 0.08 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(145.71, 0.08)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(145.71,label2_y,'Sx', fontsize=7)+ax[i].text(145.71, label2_y, 'Sx', fontsize=7)
  
 # Satellite # Satellite
-xlabels= xlabels + [145.8]  +xlabels = xlabels + [145.8] 
-ax[i].broken_barh([(145.8, 0.2 )], (0.70, 0.3), facecolors=MISC) +ax[i].broken_barh([(145.8, 0.2)], (0.70, 0.3), facecolors=MISC) 
-ax[i].text(145.85,label2_y,'Sat', fontsize=7)+ax[i].text(145.85, label2_y, 'Sat', fontsize=7)
  
 # FM Simplex # FM Simplex
-xlabels= xlabels + [146.415]  +xlabels = xlabels + [146.415] 
-ax[i].broken_barh([(146.415, 0.18 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(146.415, 0.18)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].broken_barh([(147.6, 0.38 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(147.6, 0.38)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(146.415,label2_y,'Sx', fontsize=7) +ax[i].text(146.415, label2_y, 'Sx', fontsize=7) 
-ax[i].text(147.7,label2_y,'R$_4$ in', fontsize=7)+ax[i].text(147.7, label2_y, 'R$_4$ in', fontsize=7)
  
 # Internet Linked Simplex # Internet Linked Simplex
-xlabels= xlabels + [147.42]  +xlabels = xlabels + [147.42] 
-ax[i].broken_barh([(147.42, 0.165 )], (0.70, 0.3), facecolors=MISC) +ax[i].broken_barh([(147.42, 0.165)], (0.70, 0.3), facecolors=MISC) 
-ax[i].text(147.42,label3_y,'Net Lk', fontsize=7) +ax[i].text(147.42, label3_y, 'Net Lk', fontsize=7) 
-ax[i].text(147.42,label1_y,'Sx', fontsize=7)+ax[i].text(147.42, label1_y, 'Sx', fontsize=7)
  
 # Axis # Axis
Line 772: Line 807:
  
 # 70cm  https://wp.rac.ca/144-mhz-2m-page/ # 70cm  https://wp.rac.ca/144-mhz-2m-page/
-i = 6+i = i + 1
 left = 429.5 left = 429.5
 right = 450.5 right = 450.5
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(0.7,2.1)+ax[i].set_ylim(0.7, 2.1)
  
 # Frequency labels: # Frequency labels:
-ax[i].text(left,label4_y,' 70cm'+ax[i].text(left, label4_y, ' 70cm'
-xlabels= [430, 450] +xlabels = [430, 450]
  
 # Packet Trunked Repeaters # Packet Trunked Repeaters
-xlabels= xlabels + [439.05] +xlabels = xlabels + [439.05] 
-ax[i].broken_barh([(430.05, 0.9 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(430.05, 0.9)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(430.05,label3_y,'Packet', fontsize=7) +ax[i].text(430.05, label3_y, 'Packet', fontsize=7) 
-ax[i].text(430.05,label1_y,'Output', fontsize=7) +ax[i].text(430.05, label1_y, 'Output', fontsize=7) 
-ax[i].broken_barh([(439.05, 0.9 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(439.05, 0.9)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(439.05,label3_y,'Packet', fontsize=7) +ax[i].text(439.05, label3_y, 'Packet', fontsize=7) 
-ax[i].text(439.05,label1_y,'Input', fontsize=7)+ax[i].text(439.05, label1_y, 'Input', fontsize=7)
  
 # Not allocated # Not allocated
-xlabels= xlabels + [431] +xlabels = xlabels + [431] 
-ax[i].broken_barh([(431, 0.475 )], (0.70, 0.3), facecolors='grey')+ax[i].broken_barh([(431, 0.475)], (0.70, 0.3), facecolors='grey')
  
 # Misc # Misc
-xlabels= xlabels + [431.5] +xlabels = xlabels + [431.5] 
-ax[i].broken_barh([(431.5, 1.5 )], (0.70, 0.3), facecolors=MISC) +ax[i].broken_barh([(431.5, 1.5)], (0.70, 0.3), facecolors=MISC) 
-ax[i].text(432,label2_y,'Misc', fontsize=7)+ax[i].text(432, label2_y, 'Misc', fontsize=7)
  
 # Digi Output # Digi Output
-xlabels= xlabels + [433.025] +xlabels = xlabels + [433.025] 
-ax[i].broken_barh([(433.025, 0.975 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(433.025, 0.975)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(433.025,label3_y,'R$_1$', fontsize=7) +ax[i].text(433.025, label3_y, 'R$_1$', fontsize=7) 
-ax[i].text(433.025,label1_y,'Output', fontsize=7)+ax[i].text(433.025, label1_y, 'Output', fontsize=7)
  
 # Digi Input # Digi Input
-xlabels= xlabels + [438.025] +xlabels = xlabels + [438.025] 
-ax[i].broken_barh([(438.025, 0.975 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(438.025, 0.975)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(438.025,label3_y,'R$_1$', fontsize=7) +ax[i].text(438.025, label3_y, 'R$_1$', fontsize=7) 
-ax[i].text(438.025,label1_y,'Input', fontsize=7)+ax[i].text(438.025, label1_y, 'Input', fontsize=7)
  
 # Repeater Output # Repeater Output
-xlabels= xlabels + [434.025] +xlabels = xlabels + [434.025] 
-ax[i].broken_barh([(434.025, 0.95 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(434.025, 0.95)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(434.025,label3_y,'R$_1$', fontsize=7) +ax[i].text(434.025, label3_y, 'R$_1$', fontsize=7) 
-ax[i].text(434.025,label1_y,'Output', fontsize=7)+ax[i].text(434.025, label1_y, 'Output', fontsize=7)
  
 # Repeater Input FIXME # Repeater Input FIXME
-#xlabels= xlabels + [439.025] +#xlabels = xlabels + [439.025] 
-ax[i].broken_barh([(439.025, 0.95 )], (0.70, 0.15), facecolors=PHONE) +ax[i].broken_barh([(439.025, 0.95)], (0.70, 0.15), facecolors=PHONE) 
-#ax[i].text(439.025,label3_y,'R$_1$', fontsize=7) +#ax[i].text(439.025, label3_y, 'R$_1$', fontsize=7) 
-#ax[i].text(439.025,label1_y,'Input', fontsize=7)+#ax[i].text(439.025, label1_y, 'Input', fontsize=7)
  
 # Sat # Sat
-xlabels= xlabels + [435] +xlabels = xlabels + [435] 
-ax[i].broken_barh([(435, 3 )], (0.70, 0.3), facecolors=MISC) +ax[i].broken_barh([(435, 3)], (0.70, 0.3), facecolors=MISC) 
-ax[i].text(436.3,label2_y,'Sat', fontsize=7)+ax[i].text(436.3, label2_y, 'Sat', fontsize=7)
  
 # Digital and link repeaters, except where used by IC Output # Digital and link repeaters, except where used by IC Output
-xlabels= xlabels + [440.025] +xlabels = xlabels + [440.025] 
-ax[i].broken_barh([(440.025, 0.925 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(440.025, 0.925)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(440.025,label3_y,'Digi', fontsize=7) +ax[i].text(440.025, label3_y, 'Digi', fontsize=7) 
-ax[i].text(440.025,label1_y,'Output', fontsize=7)+ax[i].text(440.025, label1_y, 'Output', fontsize=7)
  
 # Digital and link repeaters, except where used by IC Input # Digital and link repeaters, except where used by IC Input
-xlabels= xlabels + [445.025] +xlabels = xlabels + [445.025] 
-ax[i].broken_barh([(445.025, 0.925 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(445.025, 0.925)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(445.025,label3_y,'Digi', fontsize=7) +ax[i].text(445.025, label3_y, 'Digi', fontsize=7) 
-ax[i].text(445.025,label1_y,'Input', fontsize=7)+ax[i].text(445.025, label1_y, 'Input', fontsize=7)
  
 # Simplex Point-to-Point links # Simplex Point-to-Point links
-xlabels= xlabels + [441] +xlabels = xlabels + [441] 
-ax[i].broken_barh([(441, 0.975 )], (0.70, 0.3), facecolors=DIGI) +ax[i].broken_barh([(441, 0.975)], (0.70, 0.3), facecolors=DIGI) 
-ax[i].text(440.9,label3_y,'Simplex', fontsize=7) +ax[i].text(440.9, label3_y, 'Simplex', fontsize=7) 
-ax[i].text(441,label1_y,'Link', fontsize=7)+ax[i].text(441, label1_y, 'Link', fontsize=7)
  
 # FM Repeaters Output # FM Repeaters Output
-xlabels= xlabels + [442] +xlabels = xlabels + [442] 
-ax[i].broken_barh([(442, 0.975 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(442, 0.975)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(442,label3_y,'R$_2$', fontsize=7) +ax[i].text(442, label3_y, 'R$_2$', fontsize=7) 
-ax[i].text(442,label1_y,'Output', fontsize=7)+ax[i].text(442, label1_y, 'Output', fontsize=7)
  
 # FM Repeaters Input # FM Repeaters Input
-xlabels= xlabels + [447] +xlabels = xlabels + [447] 
-ax[i].broken_barh([(447, 0.975 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(447, 0.975)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(447,label3_y,'R$_2$', fontsize=7) +ax[i].text(447, label3_y, 'R$_2$', fontsize=7) 
-ax[i].text(447,label1_y,'Input', fontsize=7)+ax[i].text(447, label1_y, 'Input', fontsize=7)
  
 # FM Repeaters Output # FM Repeaters Output
-xlabels= xlabels + [443.025] +xlabels = xlabels + [443.025] 
-ax[i].broken_barh([(443.025, 1.95 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(443.025, 1.95)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(443.025,label3_y,'R$_3$', fontsize=7) +ax[i].text(443.025, label3_y, 'R$_3$', fontsize=7) 
-ax[i].text(443.025,label1_y,'Output', fontsize=7)+ax[i].text(443.025, label1_y, 'Output', fontsize=7)
  
 # FM Repeaters Input # FM Repeaters Input
-xlabels= xlabels + [448.025] +xlabels = xlabels + [448.025] 
-ax[i].broken_barh([(448.025, 1.95 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(448.025, 1.95)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(448.025,label3_y,'R$_3$', fontsize=7) +ax[i].text(448.025, label3_y, 'R$_3$', fontsize=7) 
-ax[i].text(448.025,label1_y,'Input', fontsize=7)+ax[i].text(448.025, label1_y, 'Input', fontsize=7)
  
 # FM Simplex # FM Simplex
-xlabels= xlabels + [446] +xlabels = xlabels + [446] 
-ax[i].broken_barh([(446, 0.975 )], (0.70, 0.3), facecolors=PHONE) +ax[i].broken_barh([(446, 0.975)], (0.70, 0.3), facecolors=PHONE) 
-ax[i].text(446,label2_y,'Simplex', fontsize=7)+ax[i].text(446, label2_y, 'Simplex', fontsize=7)
  
  
Line 894: Line 929:
  
 # Axis: 2 graphs on a 11x8.5 sheet (landscape) # Axis: 2 graphs on a 11x8.5 sheet (landscape)
-fig3, ax = plt.subplots(nrows=2,figsize=(11,8.5))+fig3, ax = plt.subplots(nrows=2, figsize=(11, 8.5))
  
  
 # HF # HF
 i = 0 i = 0
-ax[i].set(title='Double G5RV')+ax[i].set(title='HF')
 left = 0 left = 0
 right = 55 right = 55
Line 906: Line 941:
 # Axis # Axis
 ax[i].set_xlim((left, right)) ax[i].set_xlim((left, right))
-ax[i].set_ylim(-0.3,25)+ax[i].set_ylim(-0.3, 25)
 ax[i].set_yticks(y_ticks) ax[i].set_yticks(y_ticks)
  
 # 160m # 160m
-ax[i].broken_barh([(1.8, 0.2 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(1.8, 0.2)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(1.6,-1,'160m', fontsize=7)+ax[i].text(1.0, -1, '160m', fontsize=7)
  
 # 80m # 80m
-ax[i].broken_barh([(3.5, 0.5 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(3.5, 0.5)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(3.6,-1,'80m', fontsize=7)+ax[i].text(3.2, -1, '80m', fontsize=7) 
 + 
 +# 60m 
 +ax[i].broken_barh([(5.3305, 0.076)], (-0.3, 1.3), facecolors=OVERVIEW) 
 +ax[i].text(5.05, -1, '60m', fontsize=7)
  
 # 40m # 40m
-ax[i].broken_barh([(7, 0.3 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(7, 0.3)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(7.0,-1,'40m', fontsize=7)+ax[i].text(6.8, -1, '40m', fontsize=7)
  
 # 30m # 30m
-ax[i].broken_barh([(10.1, 0.05 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(10.1, 0.05)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(10.15,label2_y-0.7,'← 30m', fontsize=7)+ax[i].text(10.15, label2_y-0.7, '← 30m', fontsize=7)
  
 # 20m # 20m
-ax[i].broken_barh([(14, 0.3 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(14, 0.3)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(14,-1,'20m', fontsize=7)+ax[i].text(13.7, -1, '20m', fontsize=7)
  
 # 17m # 17m
-ax[i].broken_barh([(18.068, 0.1 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(18.068, 0.1)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(18.05,-1,'17m', fontsize=7)+ax[i].text(17.8, -1, '17m', fontsize=7)
  
 # 15m # 15m
-ax[i].broken_barh([(21, 0.4 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(21, 0.4)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(21,-1,'15m', fontsize=7)+ax[i].text(20.7, -1, '15m', fontsize=7)
  
 # 12m # 12m
-ax[i].broken_barh([(24.89, 0.1 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(24.89, 0.1)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(24.8,-1,'12m', fontsize=7)+ax[i].text(24.6, -1, '12m', fontsize=7)
  
 # 10m # 10m
-ax[i].broken_barh([(28, 1.7 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(28, 1.7)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(28,-1,'10m', fontsize=7)+ax[i].text(28, -1, '10m', fontsize=7)
  
 # 50m # 50m
-ax[i].broken_barh([(50, 4 )], (-0.3, 1.3), facecolors=OVERVIEW) +ax[i].broken_barh([(50, 4)], (-0.3, 1.3), facecolors=OVERVIEW) 
-ax[i].text(51.5,-1,'6m', fontsize=7)+ax[i].text(51.5, -1, '6m', fontsize=7)
  
  
 # SWR Data # SWR Data
-ax[i].plot(FREQ,VSWR, color=SWRCOLOUR)   # Measured VSWR +ax[i].plot(FREQ, VSWR, color=SWRCOLOUR)   # Measured VSWR 
-ax[i].plot(FREQ,VSWR1,ls='--', color='black',linewidth=0.5) # VSWR = 1 +ax[i].plot(FREQ, VSWR1, ls='--', color='black', linewidth=0.5) # VSWR = 1 
-ax[i].plot(FREQ,VSWR3,ls='--', color='black',linewidth=0.5) # VSWR = 3 +ax[i].plot(FREQ, VSWR3, ls='--', color='black', linewidth=0.5) # VSWR = 3 
-ax[i].plot(FREQ,VSWR10,ls='--', color='black',linewidth=0.5) # VSWR = 10 +ax[i].plot(FREQ, VSWR10, ls='--', color='black', linewidth=0.5) # VSWR = 10 
-ax[i].set(ylabel='VSWR',xlabel='Freq [MHz]') # Set x-and y-axis labels+ax[i].set(ylabel='VSWR', xlabel='Freq [MHz]') # Set x-and y-axis labels
  
  
 # VHF / UHF # VHF / UHF
-i = 1 +i = i + 
-ax[i].set(title='GP9')+ax[i].set(title='VHF and UHF')
 left = 100 left = 100
 right = 500 right = 500
 y_ticks = [1, 1.5, 2, 3, 5] y_ticks = [1, 1.5, 2, 3, 5]
-ax[i].set_xlim(left,right) +ax[i].set_xlim(left, right) 
-ax[i].set_ylim(0.8,5)+ax[i].set_ylim(0.8, 5)
 ax[i].set_yticks(y_ticks) ax[i].set_yticks(y_ticks)
  
 # 2m # 2m
-ax[i].broken_barh([(144, 4 )], (0.80, 0.2), facecolors=OVERVIEW) +ax[i].broken_barh([(144, 4)], (0.80, 0.2), facecolors=OVERVIEW) 
-ax[i].text(138, 0.7,'2m', fontsize=7)+ax[i].text(138, 0.7, '2m', fontsize=7)
  
 # 135cm # 135cm
-ax[i].broken_barh([(222, 3 )], (0.80, 0.2), facecolors=OVERVIEW) +ax[i].broken_barh([(222, 3)], (0.80, 0.2), facecolors=OVERVIEW) 
-ax[i].text(220, 0.7,'135cm', fontsize=7)+ax[i].text(220, 0.7, '135cm', fontsize=7)
  
 # 70cm # 70cm
-ax[i].broken_barh([(430, 20 )], (0.80, 0.2), facecolors=OVERVIEW) +ax[i].broken_barh([(430, 20)], (0.80, 0.2), facecolors=OVERVIEW) 
-ax[i].text(430,0.7,'70cm', fontsize=7)+ax[i].text(430, 0.7, '70cm', fontsize=7)
  
 # SWR Data # SWR Data
-ax[i].plot(FREQ,VSWR, color=SWRCOLOUR)   # Measured VSWR +ax[i].plot(FREQ, VSWR, color=SWRCOLOUR)   # Measured VSWR 
-ax[i].plot(FREQ,VSWR1,ls='--', color='black',linewidth=0.5) # VSWR = 1 +ax[i].plot(FREQ, VSWR1, ls='--', color='black', linewidth=0.5) # VSWR = 1 
-ax[i].plot(FREQ,VSWR3,ls='--', color='black',linewidth=0.5) # VSWR = 3 +ax[i].plot(FREQ, VSWR3, ls='--', color='black', linewidth=0.5) # VSWR = 3 
-ax[i].set(ylabel='VSWR',xlabel='Freq [MHz]') # Set x-and y-axis labels+ax[i].set(ylabel='VSWR', xlabel='Freq [MHz]') # Set x-and y-axis labels
  
  
Line 995: Line 1034:
 </hidden> </hidden>
  
-FIXME: Update graphics to match latest band plan  --- //[[va7fi@rbox.me|Patrick, VA7FI]] 2024/11/21 21:40// 
links/band_plan_with_swr.1732254051.txt.gz · Last modified: by 127.0.0.1