Draw Step by Step Badminton Court Using Python Matplotlib Module
In this blog, we will draw badminton court using Python’s Matplotlib module.
We are taking dimension data from below source:
Import Matplotlib Module
import matplotlib.pyplot as plt
Draw Canvas area
plt.figure(figsize = (18, 7))plt.xlim(1, 12)
plt.ylim(1, 12)
plt.show()
Output:
Draw clearance area
plt.figure(figsize = (18, 7))#points for clearance area
plt.plot(1.5, 1.5, marker = 'o')
plt.plot(11.5, 1.5, marker = 'o')
plt.plot(11.5, 11.5, marker = 'o')
plt.plot(1.5, 11.5, marker = 'o')
plt.gca().annotate('Clearance', xy=(8, 11.8), xycoords='data', fontsize=12)#draw line in clearance area
plt.plot([1.5, 11.5, 11.5, 1.5, 1.5], [1.5, 1.5, 11.5, 11.5, 1.5],linestyle = 'dashed')plt.xlim(1, 12)
plt.ylim(1, 12)
plt.show()
Output:
Draw Doubles Sideline
plt.figure(figsize = (18, 7))#points for clearance area
plt.plot(1.5, 1.5, marker = 'o')
plt.plot(11.5, 1.5, marker = 'o')
plt.plot(11.5, 11.5, marker = 'o')
plt.plot(1.5, 11.5, marker = 'o')
plt.gca().annotate('Clearance', xy=(8, 11.8), xycoords='data', fontsize=12)#draw line in clearance area
plt.plot([1.5, 11.5, 11.5, 1.5, 1.5], [1.5, 1.5, 11.5, 11.5, 1.5],linestyle = 'dashed')#draw points for doubles sideline area
plt.plot(2, 2.5, marker = 'o')
plt.plot(11, 2.5, marker = 'o')
plt.plot(11, 10.5, marker = 'o')
plt.plot(2, 10.5, marker = 'o')#draw line in doubles sideline area
plt.plot([2, 11, 11, 2, 2], [2.5, 2.5, 10.5, 10.5, 2.5],linestyle = 'solid', linewidth = 3)
plt.gca().annotate('Doubles Sideline', xy=(8, 10.8), xycoords='data', fontsize=12)
plt.gca().annotate('Baseline', xy=(11.2, 5.5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-2 inch->', xy=(2.7, 10.5), xycoords='data', fontsize=7, rotation=270)
plt.gca().annotate('<---------------------------------------------------------------- \
44 inch | 13.41 m \
------------------------------------------------------------->', xy=(2, 1.2), xycoords='data', fontsize=12)
plt.gca().annotate('<------------------ 20 inch | 6.1 m ------------------->', xy=(11.7, 2.5), xycoords='data', fontsize=12, rotation=270)plt.xlim(1, 12)
plt.ylim(1, 12)
plt.show()
Output:
Draw Singles Sidelines
plt.figure(figsize = (18, 7))#points for clearance area
plt.plot(1.5, 1.5, marker = 'o')
plt.plot(11.5, 1.5, marker = 'o')
plt.plot(11.5, 11.5, marker = 'o')
plt.plot(1.5, 11.5, marker = 'o')
plt.gca().annotate('Clearance', xy=(8, 11.8), xycoords='data', fontsize=12)#draw line in clearance area
plt.plot([1.5, 11.5, 11.5, 1.5, 1.5], [1.5, 1.5, 11.5, 11.5, 1.5],linestyle = 'dashed')#draw points for doubles sideline
plt.plot(2, 2.5, marker = 'o')
plt.plot(11, 2.5, marker = 'o')
plt.plot(11, 10.5, marker = 'o')
plt.plot(2, 10.5, marker = 'o')#draw line in doubles sideline area
plt.plot([2, 11, 11, 2, 2], [2.5, 2.5, 10.5, 10.5, 2.5],linestyle = 'solid', linewidth = 3)
plt.gca().annotate('Doubles Sideline', xy=(8, 10.8), xycoords='data', fontsize=12)
plt.gca().annotate('Baseline', xy=(11.2, 5.5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-2 inch->', xy=(2.7, 10.5), xycoords='data', fontsize=7, rotation=270)
plt.gca().annotate('<---------------------------------------------------------------- \
44 inch | 13.41 m \
------------------------------------------------------------->', xy=(2, 1.2), xycoords='data', fontsize=12)
plt.gca().annotate('<------------------ 20 inch | 6.1 m ------------------->', xy=(11.7, 2.5), xycoords='data', fontsize=12, rotation=270)#draw bottom points for singles sideline
plt.plot(2, 3.2, marker = 'o')
plt.plot(11, 3.2, marker = 'o')
plt.plot([2, 11], [3.2, 3.2])#draw right points for singles sideline
plt.plot(10.5, 2.5, marker = 'o')
plt.plot(10.5, 10.5, marker = 'o')
plt.plot([10.5, 10.5], [2.5, 10.5])#draw top points for singles sideline
plt.plot(2, 9.8, marker = 'o')
plt.plot(11, 9.8, marker = 'o')
plt.plot([2, 11], [9.8, 9.8])#draw left points for singles sideline
plt.plot(2.5, 10.5, marker = 'o')
plt.plot(2.5, 2.5, marker = 'o')
plt.plot([2.5, 2.5], [10.5, 2.5])plt.gca().annotate('Singles Sideline', xy=(8, 10), xycoords='data', fontsize=12)
plt.gca().annotate('<-1.5i->', xy=(2.6, 9.8), xycoords='data', fontsize=7, rotation=270)plt.xlim(1, 12)
plt.ylim(1, 12)
plt.show()
Output:
Draw Net in the middle
plt.figure(figsize = (18, 7))#points for clearance area
plt.plot(1.5, 1.5, marker = 'o')
plt.plot(11.5, 1.5, marker = 'o')
plt.plot(11.5, 11.5, marker = 'o')
plt.plot(1.5, 11.5, marker = 'o')
plt.gca().annotate('Clearance', xy=(8, 11.8), xycoords='data', fontsize=12)#draw line in clearance area
plt.plot([1.5, 11.5, 11.5, 1.5, 1.5], [1.5, 1.5, 11.5, 11.5, 1.5],linestyle = 'dashed')#draw points for doubles sideline
plt.plot(2, 2.5, marker = 'o')
plt.plot(11, 2.5, marker = 'o')
plt.plot(11, 10.5, marker = 'o')
plt.plot(2, 10.5, marker = 'o')#draw line in doubles sideline area
plt.plot([2, 11, 11, 2, 2], [2.5, 2.5, 10.5, 10.5, 2.5],linestyle = 'solid', linewidth = 3)
plt.gca().annotate('Doubles Sideline', xy=(8, 10.8), xycoords='data', fontsize=12)
plt.gca().annotate('Baseline', xy=(11.2, 5.5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-2 inch->', xy=(2.7, 10.5), xycoords='data', fontsize=7, rotation=270)
plt.gca().annotate('<---------------------------------------------------------------- \
44 inch | 13.41 m \
------------------------------------------------------------->', xy=(2, 1.2), xycoords='data', fontsize=12)
plt.gca().annotate('<------------------ 20 inch | 6.1 m ------------------->', xy=(11.7, 2.5), xycoords='data', fontsize=12, rotation=270)#draw bottom points for singles sideline
plt.plot(2, 3.2, marker = 'o')
plt.plot(11, 3.2, marker = 'o')
plt.plot([2, 11], [3.2, 3.2])#draw right points for singles sideline
plt.plot(10.5, 2.5, marker = 'o')
plt.plot(10.5, 10.5, marker = 'o')
plt.plot([10.5, 10.5], [2.5, 10.5])#draw top points for singles sideline
plt.plot(2, 9.8, marker = 'o')
plt.plot(11, 9.8, marker = 'o')
plt.plot([2, 11], [9.8, 9.8])#draw left points for singles sideline
plt.plot(2.5, 10.5, marker = 'o')
plt.plot(2.5, 2.5, marker = 'o')
plt.plot([2.5, 2.5], [10.5, 2.5])plt.gca().annotate('Singles Sideline', xy=(8, 10), xycoords='data', fontsize=12)
plt.gca().annotate('<-1.5i->', xy=(2.6, 9.8), xycoords='data', fontsize=7, rotation=270)#net points
#take the middle of doubles sideline bottom points
x = (2 + 11)/2
plt.plot(x, 2.5, marker = 'o')
plt.plot(x, 10.5, marker = 'o')
plt.plot([x, x], [2.5, 10.5])
plt.gca().annotate('Net', xy=(x, 6.5), xycoords='data', fontsize=12, rotation=270)plt.xlim(1, 12)
plt.ylim(1, 12)
plt.show()
Output:
Draw Short Service Line
plt.figure(figsize = (18, 7))#points for clearance area
plt.plot(1.5, 1.5, marker = 'o')
plt.plot(11.5, 1.5, marker = 'o')
plt.plot(11.5, 11.5, marker = 'o')
plt.plot(1.5, 11.5, marker = 'o')
plt.gca().annotate('Clearance', xy=(8, 11.8), xycoords='data', fontsize=12)#draw line in clearance area
plt.plot([1.5, 11.5, 11.5, 1.5, 1.5], [1.5, 1.5, 11.5, 11.5, 1.5],linestyle = 'dashed')#draw points for doubles sideline
plt.plot(2, 2.5, marker = 'o')
plt.plot(11, 2.5, marker = 'o')
plt.plot(11, 10.5, marker = 'o')
plt.plot(2, 10.5, marker = 'o')#draw line in doubles sideline area
plt.plot([2, 11, 11, 2, 2], [2.5, 2.5, 10.5, 10.5, 2.5],linestyle = 'solid', linewidth = 3)
plt.gca().annotate('Doubles Sideline', xy=(8, 10.8), xycoords='data', fontsize=12)
plt.gca().annotate('Baseline', xy=(11.2, 5.5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-2 inch->', xy=(2.7, 10.5), xycoords='data', fontsize=7, rotation=270)
plt.gca().annotate('<---------------------------------------------------------------- \
44 inch | 13.41 m \
------------------------------------------------------------->', xy=(2, 1.2), xycoords='data', fontsize=12)
plt.gca().annotate('<------------------ 20 inch | 6.1 m ------------------->', xy=(11.7, 2.5), xycoords='data', fontsize=12, rotation=270)#draw bottom points for singles sideline
plt.plot(2, 3.2, marker = 'o')
plt.plot(11, 3.2, marker = 'o')
plt.plot([2, 11], [3.2, 3.2])#draw right points for singles sideline
plt.plot(10.5, 2.5, marker = 'o')
plt.plot(10.5, 10.5, marker = 'o')
plt.plot([10.5, 10.5], [2.5, 10.5])#draw top points for singles sideline
plt.plot(2, 9.8, marker = 'o')
plt.plot(11, 9.8, marker = 'o')
plt.plot([2, 11], [9.8, 9.8])#draw left points for singles sideline
plt.plot(2.5, 10.5, marker = 'o')
plt.plot(2.5, 2.5, marker = 'o')
plt.plot([2.5, 2.5], [10.5, 2.5])plt.gca().annotate('Singles Sideline', xy=(8, 10), xycoords='data', fontsize=12)
plt.gca().annotate('<-1.5i->', xy=(2.6, 9.8), xycoords='data', fontsize=7, rotation=270)#net points
#take the middle of doubles sideline bottom points
x = (2 + 11)/2
#print(x)
plt.plot(x, 2.5, marker = 'o')
plt.plot(x, 10.5, marker = 'o')
plt.plot([x, x], [2.5, 10.5])
plt.gca().annotate('Net', xy=(x, 6.5), xycoords='data', fontsize=12, rotation=270)#left short service line
# point will start from single sideline to net. Then divide into 3 parts.
x1 = (x - 2.5)/3
print(x1)
x2 = 6.5 - x1
plt.plot(x2, 2.5, marker = 'o', color = 'red')
plt.plot(x2, 10.5, marker = 'o', color = 'red')
plt.plot([x2, x2], [2.5, 10.5])#right short service line
x3 = 6.5 + x1
plt.plot(x3, 2.5, marker = 'o', color = 'red')
plt.plot(x3, 10.5, marker = 'o', color = 'red')
plt.plot([x3, x3], [2.5, 10.5])plt.gca().annotate('Short Service Line', xy=(x3 - 0.3, 5), xycoords='data', fontsize=12, rotation=270)plt.xlim(1, 12)
plt.ylim(1, 12)
plt.show()
Output:
Write distance between short service line and net
plt.figure(figsize = (18, 7))#points for clearance area
plt.plot(1.5, 1.5, marker = 'o')
plt.plot(11.5, 1.5, marker = 'o')
plt.plot(11.5, 11.5, marker = 'o')
plt.plot(1.5, 11.5, marker = 'o')
plt.gca().annotate('Clearance', xy=(8, 11.8), xycoords='data', fontsize=12)#draw line in clearance area
plt.plot([1.5, 11.5, 11.5, 1.5, 1.5], [1.5, 1.5, 11.5, 11.5, 1.5],linestyle = 'dashed')#draw points for doubles sideline
plt.plot(2, 2.5, marker = 'o')
plt.plot(11, 2.5, marker = 'o')
plt.plot(11, 10.5, marker = 'o')
plt.plot(2, 10.5, marker = 'o')#draw line in doubles sideline area
plt.plot([2, 11, 11, 2, 2], [2.5, 2.5, 10.5, 10.5, 2.5],linestyle = 'solid', linewidth = 3)
plt.gca().annotate('Doubles Sideline', xy=(8, 10.8), xycoords='data', fontsize=12)
plt.gca().annotate('Baseline', xy=(11.2, 5.5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-2 inch->', xy=(2.7, 10.5), xycoords='data', fontsize=7, rotation=270)
plt.gca().annotate('<---------------------------------------------------------------- \
44 inch | 13.41 m \
------------------------------------------------------------->', xy=(2, 1.2), xycoords='data', fontsize=12)
plt.gca().annotate('<------------------ 20 inch | 6.1 m ------------------->', xy=(11.7, 2.5), xycoords='data', fontsize=12, rotation=270)#draw bottom points for singles sideline
plt.plot(2, 3.2, marker = 'o')
plt.plot(11, 3.2, marker = 'o')
plt.plot([2, 11], [3.2, 3.2])#draw right points for singles sideline
plt.plot(10.5, 2.5, marker = 'o')
plt.plot(10.5, 10.5, marker = 'o')
plt.plot([10.5, 10.5], [2.5, 10.5])#draw top points for singles sideline
plt.plot(2, 9.8, marker = 'o')
plt.plot(11, 9.8, marker = 'o')
plt.plot([2, 11], [9.8, 9.8])#draw left points for singles sideline
plt.plot(2.5, 10.5, marker = 'o')
plt.plot(2.5, 2.5, marker = 'o')
plt.plot([2.5, 2.5], [10.5, 2.5])plt.gca().annotate('Singles Sideline', xy=(8, 10), xycoords='data', fontsize=12)
plt.gca().annotate('<-1.5i->', xy=(2.6, 9.8), xycoords='data', fontsize=7, rotation=270)#net points
#take the middle of doubles sideline bottom points
x = (2 + 11)/2
#print(x)
plt.plot(x, 2.5, marker = 'o')
plt.plot(x, 10.5, marker = 'o')
plt.plot([x, x], [2.5, 10.5])
plt.gca().annotate('Net', xy=(x, 6.5), xycoords='data', fontsize=12, rotation=270)#left short service line
# point will start from single sideline to net. Then divide into 3 parts.
x1 = (x - 2.5)/3
#print(x1)
x2 = 6.5 - x1
plt.plot(x2, 2.5, marker = 'o', color = 'red')
plt.plot(x2, 10.5, marker = 'o', color = 'red')
plt.plot([x2, x2], [2.5, 10.5])#right short service line
x3 = 6.5 + x1
plt.plot(x3, 2.5, marker = 'o', color = 'red')
plt.plot(x3, 10.5, marker = 'o', color = 'red')
plt.plot([x3, x3], [2.5, 10.5])plt.gca().annotate('Short Service Line', xy=(x3 - 0.3, 5), xycoords='data', fontsize=12, rotation=270)plt.gca().annotate('<-.76 m-->', xy=(2, 3.4), xycoords='data', fontsize=8)plt.gca().annotate('<--------------- 13 inch | 3.9 m ------------->', xy=(2.5, 3.4), xycoords='data', fontsize=12)
plt.gca().annotate('<-- 6.5 inch | 1.98 m -->', xy=(x2, 3.4), xycoords='data', fontsize=10)plt.xlim(1, 12)
plt.ylim(1, 12)
plt.show()
Output:
Draw Center Line
plt.figure(figsize = (18, 7))#points for clearance area
plt.plot(1.5, 1.5, marker = 'o')
plt.plot(11.5, 1.5, marker = 'o')
plt.plot(11.5, 11.5, marker = 'o')
plt.plot(1.5, 11.5, marker = 'o')
plt.gca().annotate('Clearance', xy=(8, 11.8), xycoords='data', fontsize=12)#draw line in clearance area
plt.plot([1.5, 11.5, 11.5, 1.5, 1.5], [1.5, 1.5, 11.5, 11.5, 1.5],linestyle = 'dashed')#draw points for doubles sideline
plt.plot(2, 2.5, marker = 'o')
plt.plot(11, 2.5, marker = 'o')
plt.plot(11, 10.5, marker = 'o')
plt.plot(2, 10.5, marker = 'o')#draw line in doubles sideline area
plt.plot([2, 11, 11, 2, 2], [2.5, 2.5, 10.5, 10.5, 2.5],linestyle = 'solid', linewidth = 3)
plt.gca().annotate('Doubles Sideline', xy=(8, 10.8), xycoords='data', fontsize=12)
plt.gca().annotate('Baseline', xy=(11.2, 5.5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-2 inch->', xy=(2.7, 10.5), xycoords='data', fontsize=7, rotation=270)
plt.gca().annotate('<---------------------------------------------------------------- \
44 inch | 13.41 m \
------------------------------------------------------------->', xy=(2, 1.2), xycoords='data', fontsize=12)
plt.gca().annotate('<------------------ 20 inch | 6.1 m ------------------->', xy=(11.7, 2.5), xycoords='data', fontsize=12, rotation=270)#draw bottom points for singles sideline
plt.plot(2, 3.2, marker = 'o')
plt.plot(11, 3.2, marker = 'o')
plt.plot([2, 11], [3.2, 3.2])#draw right points for singles sideline
plt.plot(10.5, 2.5, marker = 'o')
plt.plot(10.5, 10.5, marker = 'o')
plt.plot([10.5, 10.5], [2.5, 10.5])#draw top points for singles sideline
plt.plot(2, 9.8, marker = 'o')
plt.plot(11, 9.8, marker = 'o')
plt.plot([2, 11], [9.8, 9.8])#draw left points for singles sideline
plt.plot(2.5, 10.5, marker = 'o')
plt.plot(2.5, 2.5, marker = 'o')
plt.plot([2.5, 2.5], [10.5, 2.5])plt.gca().annotate('Singles Sideline', xy=(8, 10), xycoords='data', fontsize=12)
plt.gca().annotate('<-1.5i->', xy=(2.6, 9.8), xycoords='data', fontsize=7, rotation=270)#net points
#take the middle of doubles sideline bottom points
x = (2 + 11)/2
#print(x)
plt.plot(x, 2.5, marker = 'o')
plt.plot(x, 10.5, marker = 'o')
plt.plot([x, x], [2.5, 10.5])
plt.gca().annotate('Net', xy=(x, 6.5), xycoords='data', fontsize=12, rotation=270)#left short service line
# point will start from single sideline to net. Then divide into 3 parts.
x1 = (x - 2.5)/3
#print(x1)
x2 = 6.5 - x1
plt.plot(x2, 2.5, marker = 'o', color = 'red')
plt.plot(x2, 10.5, marker = 'o', color = 'red')
plt.plot([x2, x2], [2.5, 10.5])#right short service line
x3 = 6.5 + x1
plt.plot(x3, 2.5, marker = 'o', color = 'red')
plt.plot(x3, 10.5, marker = 'o', color = 'red')
plt.plot([x3, x3], [2.5, 10.5])plt.gca().annotate('Short Service Line', xy=(x3 - 0.3, 5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-.76 m-->', xy=(2, 3.4), xycoords='data', fontsize=8)
plt.gca().annotate('<--------------- 13 inch | 3.9 m ------------->', xy=(2.5, 3.4), xycoords='data', fontsize=12)
plt.gca().annotate('<-- 6.5 inch | 1.98 m -->', xy=(x2, 3.4), xycoords='data', fontsize=10)#draw points for left center line
y1 = (2.5 + 10.5)/2
plt.plot(2, y1, marker = 'o')
plt.plot(x2, y1, marker = 'o')
plt.plot([2, x2], [y1, y1])
plt.gca().annotate('Left Service Court', xy=(3, y1 + 1.8), xycoords='data', fontsize=12)plt.gca().annotate('Center Line', xy=(3.5, y1 + .3), xycoords='data', fontsize=12)plt.gca().annotate('Right Service Court', xy=(3, y1 - 1.8), xycoords='data', fontsize=12)plt.gca().annotate('<--8.5 inch | 2.59 m -->', xy=(2.2, y1), xycoords='data', fontsize=10, rotation=270)#draw points for right center line
plt.plot(x3, y1, marker = 'o')
plt.plot(11, y1, marker = 'o')
plt.plot([x3, 11], [y1, y1])
plt.gca().annotate('Doubles Service Line', xy=(10.6, 6.7), xycoords='data', fontsize=10, rotation=270)plt.xlim(1, 12)
plt.ylim(1, 12)
plt.show()
Output:
Final code
plt.figure(figsize = (18, 7))#points for clearance area
plt.plot(1.5, 1.5, marker = 'o')
plt.plot(11.5, 1.5, marker = 'o')
plt.plot(11.5, 11.5, marker = 'o')
plt.plot(1.5, 11.5, marker = 'o')
plt.gca().annotate('Clearance', xy=(8, 11.8), xycoords='data', fontsize=12)#draw line in clearance area
plt.plot([1.5, 11.5, 11.5, 1.5, 1.5], [1.5, 1.5, 11.5, 11.5, 1.5],linestyle = 'dashed')#draw points for doubles sideline
plt.plot(2, 2.5, marker = 'o')
plt.plot(11, 2.5, marker = 'o')
plt.plot(11, 10.5, marker = 'o')
plt.plot(2, 10.5, marker = 'o')#draw line in doubles sideline area
plt.plot([2, 11, 11, 2, 2], [2.5, 2.5, 10.5, 10.5, 2.5],linestyle = 'solid', linewidth = 3)
plt.gca().annotate('Doubles Sideline', xy=(8, 10.8), xycoords='data', fontsize=12)
plt.gca().annotate('Baseline', xy=(11.2, 5.5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-2 inch->', xy=(2.7, 10.5), xycoords='data', fontsize=7, rotation=270)
plt.gca().annotate('<---------------------------------------------------------------- \
44 inch | 13.41 m \
------------------------------------------------------------->', xy=(2, 1.2), xycoords='data', fontsize=12)
plt.gca().annotate('<------------------ 20 inch | 6.1 m ------------------->', xy=(11.7, 2.5), xycoords='data', fontsize=12, rotation=270)#draw bottom points for singles sideline
plt.plot(2, 3.2, marker = 'o')
plt.plot(11, 3.2, marker = 'o')
plt.plot([2, 11], [3.2, 3.2])#draw right points for singles sideline
plt.plot(10.5, 2.5, marker = 'o')
plt.plot(10.5, 10.5, marker = 'o')
plt.plot([10.5, 10.5], [2.5, 10.5])#draw top points for singles sideline
plt.plot(2, 9.8, marker = 'o')
plt.plot(11, 9.8, marker = 'o')
plt.plot([2, 11], [9.8, 9.8])#draw left points for singles sideline
plt.plot(2.5, 10.5, marker = 'o')
plt.plot(2.5, 2.5, marker = 'o')
plt.plot([2.5, 2.5], [10.5, 2.5])plt.gca().annotate('Singles Sideline', xy=(8, 10), xycoords='data', fontsize=12)
plt.gca().annotate('<-1.5i->', xy=(2.6, 9.8), xycoords='data', fontsize=7, rotation=270)#net points
#take the middle of doubles sideline bottom points
x = (2 + 11)/2
#print(x)
plt.plot(x, 2.5, marker = 'o')
plt.plot(x, 10.5, marker = 'o')
plt.plot([x, x], [2.5, 10.5])
plt.gca().annotate('Net', xy=(x, 6.5), xycoords='data', fontsize=12, rotation=270)#left short service line
# point will start from single sideline to net. Then divide into 3 parts.
x1 = (x - 2.5)/3
#print(x1)
x2 = 6.5 - x1
plt.plot(x2, 2.5, marker = 'o', color = 'red')
plt.plot(x2, 10.5, marker = 'o', color = 'red')
plt.plot([x2, x2], [2.5, 10.5])#right short service line
x3 = 6.5 + x1
plt.plot(x3, 2.5, marker = 'o', color = 'red')
plt.plot(x3, 10.5, marker = 'o', color = 'red')
plt.plot([x3, x3], [2.5, 10.5])plt.gca().annotate('Short Service Line', xy=(x3 - 0.3, 5), xycoords='data', fontsize=12, rotation=270)
plt.gca().annotate('<-.76 m-->', xy=(2, 3.4), xycoords='data', fontsize=8)
plt.gca().annotate('<--------------- 13 inch | 3.9 m ------------->', xy=(2.5, 3.4), xycoords='data', fontsize=12)
plt.gca().annotate('<-- 6.5 inch | 1.98 m -->', xy=(x2, 3.4), xycoords='data', fontsize=10)#draw points for left center line
y1 = (2.5 + 10.5)/2
plt.plot(2, y1, marker = 'o')
plt.plot(x2, y1, marker = 'o')
plt.plot([2, x2], [y1, y1])
plt.gca().annotate('Left Service Court', xy=(3, y1 + 1.8), xycoords='data', fontsize=12)
plt.gca().annotate('Center Line', xy=(3.5, y1 + .3), xycoords='data', fontsize=12)
plt.gca().annotate('Right Service Court', xy=(3, y1 - 1.8), xycoords='data', fontsize=12)
plt.gca().annotate('<--8.5 inch | 2.59 m -->', xy=(2.2, y1), xycoords='data', fontsize=10, rotation=270)#draw points for right center line
plt.plot(x3, y1, marker = 'o')
plt.plot(11, y1, marker = 'o')
plt.plot([x3, 11], [y1, y1])
plt.gca().annotate('Doubles Service Line', xy=(10.6, 6.7), xycoords='data', fontsize=10, rotation=270)plt.xlim(1, 12)
plt.ylim(1, 12)
plt.title("Badminton Court", fontsize=28, color = 'red')
plt.axis("off")
plt.show()
Output:
Thank for reading.