開學季,教你用Python畫大學教室座位神分區圖!網友直呼「中槍」

2021-03-02 頂級程式設計師


源 / 戀習Python        文 / 丁彥軍     

我們上過大學的朋友們都知道,大學沒有固定教室也沒有固定的座位,所以大家可以隨便找個自己喜歡的位置坐下。

別看這些不起眼的座位,感覺沒什麼差別。其實,它們可是隱藏著許多小秘密的哦~雖然這些座位,沒有什麼差別,但是他們可以反映出你在學校裡面屬於學霸還是學渣,一目了然。

網上曾有這樣一張神奇的教室座位分區圖,網友直呼「中槍」!

從「神座位表」中可以看到,一間教室被劃分成了「學霸區」、「妹紙區」、「考神區」、「女神區」、「睡神區」、「LOL隊友區」和「深藏功與名」等十個不同的區域。

一貫作風!戀習Python這就用Python給大家畫這幅有趣的神分區圖,看看是不是跟你的情況一樣呢?

基本思路:我們將畫布分成若干子畫布,這些子畫布構成繪圖區域,在這些繪圖區域上分別繪製圖形,這就讓我們想到函數subplot2grid()的使用方法。

plt.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)

通過使用subplot2grid()函數的rowspan 和colspan 參數可以讓子區跨越固定的網格布局的多個行和列,實現不同的子區布局。

值得注意的是,圖形位置的索引起點是從0 開始算起的,而不是像子區函數subplot()中的圖形位置是從1 開始算起的。

比如我們要畫一張講堂圖片,區域大小為(3,3),起始位置為(0,0),跨區域只在行方向延伸3,詳情代碼如下:

import matplotlib.pyplot as pltimport matplotlib as mpl  mpl.rcParams["font.sans-serif"]=["SimHei"]  mpl.rcParams["axes.unicode_minus"]=Falseplt.subplot2grid((3,3),(0,0),colspan=3)plt.text(0.5,0.5,"講堂",ha="center",fontsize=25)plt.subplot2grid((3,3),(1,1),colspan=1)plt.text(0.5,0.5,"學霸區",ha="center",fontsize=20)

結果圖如下:

理解了函數subplot2grid()基本使用方法後,再回頭看看那張神分布圖,我們可將其區域大小為(6,8),大小是由自己設計,沒有固定。可依次按照遲到黨、睡神、深藏功與名等順序,畫每一類所屬的區域。

詳情代碼如下:

import matplotlib.pyplot as pltimport matplotlib as mpl mpl.rcParams["font.sans-serif"]=["SimHei"] mpl.rcParams["axes.unicode_minus"]=False
plt.subplot2grid((6,8),(0,0),colspan=2,fc='red')plt.text(0.5,0.5,"遲到黨",ha="center",fontsize=15)
plt.subplot2grid((6,8),(0,2),colspan=4,fc='LightGrey')plt.text(0.5,0.5,"睡神",ha="center",fontsize=20)
plt.subplot2grid((6,8),(0,6),rowspan=2,colspan=2)plt.text(0.0,0.5,"深藏功與名",va="center",fontsize=15)
plt.subplot2grid((6,8),(1,0),colspan=2,rowspan=2)plt.text(0.5,0.5,"考神",ha="center",fontsize=15)
plt.subplot2grid((6,8),(1,2),colspan=4,rowspan=2,fc='Green')plt.text(0.5,0.5,"LOL隊友",ha="center",fontsize=20)
plt.subplot2grid((6,8),(2,6),rowspan=2,colspan=2,fc='Moccasin')plt.text(0.5,0.5,"憂傷少年",ha="center",fontsize=15)
plt.subplot2grid((6,8),(3,0),colspan=2,rowspan=2,fc='pink')plt.text(0.5,0.5,"女神",ha="center",fontsize=15)
plt.subplot2grid((6,8),(3,2),colspan=4,fc='Crimson')plt.text(0.5,0.5,"學霸",ha="center",fontsize=15)
plt.subplot2grid((6,8),(4,2),colspan=6,fc='Orange')plt.text(0.5,0.5,"妹子區",ha="center",fontsize=15)
plt.subplot2grid((6,8),(5,0),colspan=8,fc='yellow')plt.text(0.5,0.5,"偽學霸區",ha="center",fontsize=20)
plt.suptitle("大學教室座位神分區圖",fontsize=20)plt.savefig(r'C:\Users\Administrator\Desktop\zuowei.png')plt.show()

最終成品如下:

驚不驚喜,意不意外?

關於顏色的填充,可根據自己的喜歡顏色來設計,具體可參考RGB顏色值與十六進位顏色碼轉換工具,連結:

https://www.sioe.cn/yingyong/yanse-rgb-16/

文中,還用到函數suptitle()是繪製Figure 畫布標題的文本內容,text()是設置文字說明。在這裡主要說說,text語法使用

text(x,y,string,fontsize=15,verticalalignment="top",horizontalalignment="right")


參數說明:

x,y:表示坐標值上的值

string:表示說明文字
fontsize:表示字體大小
verticalalignment:垂直對齊方式 ,參數:[ 『center』 | 『top』 | 『bottom』 | 『baseline』 ]
horizontalalignment:水平對齊方式 ,參數:[ 『center』 | 『right』 | 『left』 ]

好了,大學裡面的教室座位分區用Python畫就是這樣了,哈哈哈,是不是忒簡單,一個subplot2grid()就搞定。

最後,說說關於遲到黨,至於遲到的嘛,沒得挑,就哪兒有空位,自覺補去吧!我可是深有體會呀

另外,做個小調查,你經常會選擇哪個位置坐下來聽課呢?歡迎大家在留言處評論。

-END-

轉載聲明:本文選自「戀習Python 」。

重磅推出全新學習模式
用打卡學Python
每天30分鐘
30天學會Python編程

世界正在獎勵堅持學習的人!

相關焦點

  • 網友問答:如何設計一個教室遊戲場景?
    文 | 三二 (轉載請註明出處)關注公眾號:教你畫像素畫微信號:pixelfish微博:教你畫像素畫2014
  • 【公交分區】史上最全公交車座分區!趕緊看看你坐對了沒!
    你以為只有教室座位有「神分區」嗎?
  • 英語地道說 | 終於開學啦!「開學」用英語怎麼說?
    今天,北京幼兒園的孩子和小學高年級的學生都開學了,低年級的孩子們也「時刻準備著」了。神獸歸籠,普天同慶!那麼問題來了,你知道「開學」用英語怎麼說嗎?很多人可能會覺得「開門」是「open the door」,那麼「開學」不就是「open the school」嗎?No!No! No!
  • 書院開學學員跪拜老師引爭議 網友:恥辱(圖)
    11月17日,一組北京鳳凰嶺書院開學典禮上學員跪拜老師的照片,引發眾多網友爭論,部分網友稱下跪並非中華文明精華應摒棄,甚至有網友稱之為
  • 「開學季」到了,黎塘智達文具城讓你看一眼就淪陷的高顏值文具這裡都有
    震撼驚悚動作大片《開學》即將全國上映就像小編小時候的老師常說的學生上學沒有文具就像軍人上戰場沒有扛槍一套好文具是開學的必備品品種齊全,選擇多關鍵是性價比高,購物環境好只有你想不到的,沒有你買不到的文體城除了有文具,還有辦公用品、書法用具、各類小電器、手工耗材等各類體育文化用
  • 70、80後,開學現場!
    ✪ 又到開學季,讓我們回憶70、80、90的開學名場面。轉眼又是一年開學季你知道70後、80後、90後的開學季是什麼樣的嗎那時農村的學校水泥地面很少任何地方都適合雜草生長一個暑假過完教室前後、操場……全部被雜草佔領「綠化面積」可以說達到70%以上嚴重影響學生出行和活動因此開學打掃衛生除草清理水溝必不可少除草,老師會安排一些離家近的同學從家裡帶來鋤頭、鐵鍬等工具男生女生一起勞動
  • 開學季,當然要一路順風
    又到一年開學季。
  • Python詞雲:Windows安裝Wordcloud報錯解決辦法
    看到別人畫的很漂亮的詞雲想自己動手來一個
  • 新莊社區老年大學秋季班下周一開學啦!
    開學注意事項1、開學時間:2020年9月14日正式開學2、為防控疫情,請學員佩戴好口罩進入社區老年大學教室上課。3、近期天氣依然比較炎熱,請學員自備水杯和毛巾,根據自身身體情況安排是否上課,有情況提前和社區工作人員聯繫。
  • 李吉他2019開學季 | 倒數計時,讓我們來聊聊關於開學季的幾個小故事
    你還記得今年開學季第一支發布的影片嗎?讓我們再重溫一次!
  • 【多圖】英國13所大學2018開學周現場直擊!
    國內的小夥伴們已經開學一個月了...而英國大學才.剛!剛!開!學!今天我就帶大家來感受下英國大學的開學周(welcome week)!不要小看開學周,不同學校的風格完全不同。開學周從一定程度上反映了這所大學的 style!感興趣就繼續看下去吧!
  • Python第24課:海龜繪圖_畫圓和點、海龜書寫文本
    課堂筆記中是20~24課中我們學過的turtle指令,我是參考「turtle庫官方文檔」整理的,同學們也要善於去用turtle官方文檔,將各種指令的單詞記錄到筆記本上,不用電腦的時候也可以隨時學習記憶。「老師只是一個搭梯子、扶梯子的人,美妙的風景還要等著同學們去發現。」
  • Python的數據可視化:對比7種工具包
    Matplotlib在Python中繪圖庫,是一個相對低水平的,所以為了畫出一個看起來很漂亮的圖,它通常要使用比其他的庫需要更多的命令。另一方面,你幾乎可以使用matplotlib繪製任何你想畫的圖。它非常靈活,但是靈活性帶來的問題就是冗餘問題。  我們首先繪製一個直方圖來展示每個航空公司的航線長度的分布。直方圖將所有的路線長度劃分成範圍(或著箱子),然後每個範圍內的數據點進行計數。
  • 開學最得力 | 吃完了託馬斯必勝客套餐,開學的託馬斯文具你準備好了嗎?
    讓我們畫出一條開往樂園的火車道,送可愛的託馬斯回家吧~▲ 得力70713-24色  70714-36色  70715-48色開學了大家都要用姓名貼來區分課本,託馬斯防水姓名貼配上託馬斯包書紙,再也不擔心課本被拿錯!
  • 開學症候群,你中槍了沒?
    你有開學綜合症嗎~?如果沒有,那要恭喜你啊!你的適應能力真的非常強!
  • 遠距上課開銷貴,美開學季支出恐創新高
    由於遠程上課的需求,今年打算在開學季購買電腦及其它電子用品的家庭增加。圖為美國加州科爾特馬德拉的一家蘋果店。(Justin Sullivan / Getty Images)在校方確定新學年因疫情轉為遠距教學後,美國今年的開學季支出,估計將超過千億美元。
  • 開學季,你沒見過的創意文具!
    九月秋風起,又到一年開學季,圍觀文具設計師們獨具創意的文具,選擇一些特別又有趣的文具,讓校園生活更加豐富
  • 全球抗「疫」:用Python帶你了解世界疫情
    但有時候,持續滾動的數字往往會讓人從最初的恐懼變成麻木,因此筆者今天會用Python把一個一個冰冷的數字變成一幅一幅生動的圖片,帶你更加具體的了解世界疫情。通過本文,你會學到如何用Python做數據分析,數據可視化,畫世界疫情地圖,了解世界疫情。本次用到的數據我在前面文章分享過,具體見全球抗「疫」:各國疫情數據早知道。
  • 開學季: 一款提升幸福感的宿舍小冰箱
    ,大二大三的「老司機」們也踏上了返校的徵程,放假久了總還是很懷念校園的,有開學恐懼症的應該都是單身汪吧?雖說家中生活樂無邊,但學校總歸是學生應該待的地方,離開了自己的家,大學就是你的另一個家了。在二十多平的宿舍裡,和舍友一起度過四年的青春時光也是非常值得珍惜的,雖說現在大學寢室的生活條件相較於以前改善了很多,大部分學校增加了空調和熱水器,但是和家裡相比,缺了一些生活家電還是很不方便的。