
我們一直在講python可視化,用matplotlib來繪制各類圖表,今天我們再來講講matplotlib的坐標(biāo)軸和rc參數(shù)設(shè)置指南!
設(shè)置坐標(biāo)軸
還記得上次畫的那條“項鏈”嘛?結(jié)尾的時候有說過,這些是新手村禮包,還有很多其他值得探索的地方呢,那么就一起來看康還有哪些意想不到的操作吧(包括但不限于折線圖哦,很多操作在其他圖中也是可以運用噠!)
當(dāng)我看到這樣一副圖的時候,心里有點點疑問,貌似和手繪的圖有點不一樣啊,到底哪里不一樣呢,來個對比看一下。
這是matplotlib繪制的y = x^2:
這是本人親手繪制的y = x^2:
(本靈魂畫手已上線,非戰(zhàn)斗人員請撤離!不要太在意細(xì)節(jié)哈,忽視那個長的不太協(xié)調(diào)的x軸和彎彎曲曲如蚯蚓的拋物線,手殘黨表示真的盡力了,意會!意會哈?。?
正經(jīng)的說,雖然都是y = x^2的圖像,是不是感覺兩幅圖差異還蠻大的。
最明顯的區(qū)別在于x軸和y軸的位置,繪制拋物線時我們習(xí)慣與y軸位于中間位置,所以在用matplotlib繪圖時可以不可以改變坐標(biāo)軸位置呢?答案當(dāng)然是肯定的!
ax = plt.gca() #獲取坐標(biāo)軸對象 ax.spines['right'].set_color('none') #把右邊的邊框顏色設(shè)置為無色,隱藏右邊框 ax.spines['top'].set_color('none') #把上邊的邊框顏色設(shè)置為無色,隱藏上邊框 ax.xaxis.set_ticks_position('bottom') # 指定下邊的邊框作為 x 軸 ax.yaxis.set_ticks_position('left') #指定左邊的邊框為 y 軸 ax.spines['bottom'].set_position(('data', 0)) #指定 data 設(shè)置的bottom(也就是指定的x軸)綁定到y(tǒng)軸的0這個點上 ax.spines['left'].set_position(('data', 0)) #指定 data 設(shè)置的left(也就是指定的y軸)綁定到x軸的0這個點上 x = np.arange(-1,1,0.01) y = x**2 plt.plot(x,y) plt.legend(["y = x^2"],loc = 1) plt.savefig("line3.jpg") plt.show()
效果圖如下:
這樣看起來是不是和上邊手繪的那一個圖相似了很多?
改變坐標(biāo)軸的步驟在上邊代碼中注釋部分寫的很清楚啦,不再占篇幅贅述,其實就是把用不到的邊框透明化,然后移動了另外兩個邊框作為x軸和y軸,其他刻度、標(biāo)簽以及圖標(biāo)等的設(shè)置在介紹折線圖的時候都有介紹過。
rc參數(shù)設(shè)置
作為一個英語渣,能用中文的時候還是希望能用中文,然而當(dāng)我在繪圖的時候卻發(fā)生了一點意外,喏,就是下邊這副眼熟的圖:
plt.figure(figsize=(6,4),dpi = 80) plt.plot(x,y) plt.title("折線圖") plt.xlabel("x") plt.ylabel("y") plt.xlim(-1,1) plt.ylim(0,1.1) plt.xticks([-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1]) plt.yticks([0,0.25,0.5,0.75,1]) plt.legend(["y = x^2"],loc = 9) plt.savefig("line.png") plt.show()
和最開始的那幅圖幾乎一毛一樣,只不過改了個標(biāo)題,上邊圖的標(biāo)題是“l(fā)ine”,我想改成“折線圖”三個字,結(jié)果就變成這個樣子了,原因在于原生的matplotlib是不支持中文顯示的,所以需要進行rc參數(shù)的設(shè)置。所謂rc參數(shù),實際上修改是默認(rèn)的屬性,原來不支持中文,修改一下讓它支持中文就可以了。
在這里還有一個小坑,那就是通過rc參數(shù)設(shè)置顯示中文后,一些特殊符號比如負(fù)號顯示會出現(xiàn)問題,這里不再用具體的例子引出這個小坑了,我們順手給它一起解決掉,節(jié)省點篇幅(實際是我有點懶233)
解決方案很久簡單,兩行代碼搞定:
plt.rcParams['font.sans-serif']=['Simhei'] #顯示中文 plt.rcParams['axes.unicode_minus']=False #顯示負(fù)號
再運行上邊的代碼看下效果:
中文和負(fù)號都正常顯示啦!
rc參數(shù)的設(shè)置到這里就結(jié)束了嘛?實際上常用的rc參數(shù)設(shè)置就是這兩行沒錯,然而還有需要提醒的一點,記下來,要考的!
rc參數(shù)修改的是全局默認(rèn)屬性,也就是說,這個參數(shù)一旦設(shè)置,后續(xù)進行的所有操作都會受到rc參數(shù)的影響!
這也是進行一次設(shè)置,全篇畫圖函數(shù)都可以正常顯示中文和負(fù)號的原因。
而rc參數(shù)還可以進行諸如線條寬度,標(biāo)記點尺寸等等的各種設(shè)置,這些設(shè)置對于每個畫圖函數(shù)來說幾乎都有相對應(yīng)的參數(shù)進行單獨設(shè)置,完全沒有必要在rc參數(shù)中對全篇進行限制,所以如非必要,最好不要通過rc參數(shù)進行除了顯示中文和符號外的其他設(shè)置。
同一幅圖中繪制多條折線
其實折線圖一個很重要的應(yīng)用是查看事務(wù)隨著時間的發(fā)展所呈現(xiàn)出來的趨勢,有時候我們想要查看不同的指標(biāo)在同一段時間內(nèi)的變化趨勢,就需要在一副圖中繪制多條折線,這種需求要怎樣實現(xiàn)呢?
實際上原理很簡單,那就是創(chuàng)建一個畫布后,在同一塊畫布中重復(fù)繪制就可以了:
plt.figure(figsize=(12,4)) plt.plot(df.iloc[:,0].iloc[:15],df.iloc[:,1].iloc[:15],marker = "o",label = "收盤價") plt.plot(df.iloc[:,0].iloc[:15],df.iloc[:,2].iloc[:15],marker = "v",label = "最高價") plt.plot(df.iloc[:,0].iloc[:15],df.iloc[:,3].iloc[:15],marker = "v",label = "最低價") plt.plot(df.iloc[:,0].iloc[:15],df.iloc[:,4].iloc[:15],marker = "o",label = "開盤價") plt.legend();
效果圖:
這是一段時間內(nèi)股票價格的數(shù)據(jù),截取了時間作為x軸數(shù)據(jù),開盤價,最高價,最低價,收盤價為y軸數(shù)據(jù)繪制的折線圖,能夠看出這一段時間內(nèi)股票價格的走勢還是比較平穩(wěn)的。
溫馨提示:在同一塊畫布中可以重復(fù)繪圖,仔細(xì)觀察會發(fā)現(xiàn),紅色線條在其他線條圖層的上方,即后繪制的圖會覆蓋前邊繪制的圖,所以,在繪制圖形時要注意,例如餅圖這種,需要同時展現(xiàn)好幾塊餅的情況,不能采用這種繪圖方式,而是需要創(chuàng)建子圖,進行多圖展示!
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03