Python matplotlib

目錄

1、安裝 matplotlib

2、繪制折線圖

修改標簽文字和線條粗細

校正圖形

3、繪制散點圖

繪制單點

繪制一系列點

自動計算數據

刪除數據點的輪廓

自定義顏色

使用顏色映射

自動保存圖表

4、隨機漫步

創建 RandomWalk() 類

選擇方向

繪制隨機漫步圖

給點著色

增加點數

調整尺寸


1、安裝 matplotlib

在Windows系統中,首先需要安裝Visual Studio。為此,請訪問Windows Dev Center | Microsoft Developer,單擊Downloads,再查找Visual Studio Community——一組免費的Windows開發工具。請下載并運行該安裝序。

接下來,需要下載matplotlib安裝程序。為此,請訪問matplotlib · PyPI,并查找與你使用的Python版本匹配的wheel文件(擴展名為.whl的文件)。例如,如果你使用的是32位的Python3.5,則需要下載matplotlib-1.4.3-cp35-none-win32.whl。

將這個.whl文件復制到你的項目文件夾,打開一個命令窗口,并切換到該項目文件夾,再使用pip來安裝:

python -m pip install --user matplotlib-1.4.3-cp35-none-win32.whl

安裝必要的包后,對安裝進行測試。為此,首先使用命令python或python3啟動一個終端會話,再嘗試導入matplotlib:如果沒有出現任何錯誤消息,就說明你的系統安裝了matplotlib。

WARNING: The script f2py.exe is installed in 'C:\Users\hp\AppData\Roaming\Python\Python312\Scripts' which is not on PATH.

Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.


$ python
>>> import matplotlib

matplotlib畫廊:要查看使用matplotlib可制作的各種圖表,請訪問Matplotlib — Visualization with Python的示例畫廊。單擊畫廊中的圖表,就可查看用于生成圖表的代碼。

2、繪制折線圖

下面來使用matplotlib繪制一個簡單的折線圖,再對其進行定制,以實現信息更豐富的數據可視化。我們將使用平方數序列1、4、9、16和25來繪制這個圖表。

只需向matplotlib提供如下數字,matplotlib就能完成其他的工作:

import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()
  • 首先導入了模塊pyplot,并給它指定了別名plt,以免反復輸入pyplot。模塊pyplot包含很多用于生成圖表的函數。
  • 我們創建了一個列表,在其中存儲了前述平方數,再將這個列表傳遞給函數plot(),這個函數嘗試根據這些數字繪制出有意義的圖形。plt.show() 打開matplotlib查看器,并顯示繪制的圖形,如圖所示。查看器讓你能夠縮放和導航圖形,另外,單擊磁盤圖標可將圖形保存起來。

修改標簽文字和線條粗細

如上圖所示的圖形表明數字是越來越大的,但標簽文字太小,線條太細。所幸matplotlib讓你能夠調整可視化的各個方面。下面通過一些定制來改善這個圖形的可讀性,如下所示:

import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]
plt.plot(squares, linewidth=5)# 設置圖表標題,并給坐標軸加上標簽
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)# 設置刻度標記的大小
plt.tick_params(axis='both', labelsize=14)plt.show()
  • 參數 linewidth 決定了 plot() 繪制的線條的粗細。函數 title() 給圖表指定標題。
  • 函數xlabel()和ylabel()讓你能夠為每條軸設置標題,參數fontsize指定了圖表中文字的大小。
  • 函數tick_params()設置刻度的樣式,其中指定的實參將影響x軸和y軸上的刻度(axis='both'),并將刻度標記的字號設置為14(labelsize=14)。

校正圖形

圖形容易閱讀后,我們發現沒有正確地繪制數據:折線圖的終點指出4.0的平方為25!下面來修復這個問題。

當你向plot()提供一系列數字時,它假設第一個數據點對應的 x坐標值為0,但我們的第一個點對應的 x值為1。為改變這種默認行為,我們可以給 plot() 同時提供輸入值和輸出值:

import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]
input_values = [1, 2, 3, 4, 5]
plt.plot(input_values, squares, linewidth=5)# 設置圖表標題,并給坐標軸加上標簽
--snip--

現在plot()將正確地繪制數據,因為我們同時提供了輸入值和輸出值,它無需對輸出值的生成方式作出假設。最終的圖形是正確的。

3、繪制散點圖

使用scatter() 繪制散點圖并設置其樣式

有時候,需要繪制散點圖并設置各個數據點的樣式。例如,你可能想以一種顏色顯示較小的值,而用另一種顏色顯示較大的值。繪制大型數據集時,你還可以對每個點都設置同樣的樣式,再使用不同的樣式選項重新繪制某些點,以突出它們。

繪制單點

要繪制單個點,可使用函數scatter(),并向它傳遞一對 x 和 y 坐標,它將在指定位置繪制一個點:

import matplotlib.pyplot as pltplt.scatter(2, 4)
plt.show()

下面來設置輸出的樣式,使其更有趣:添加標題,給軸加上標簽,并確保所有文本都大到能夠看清:

import matplotlib.pyplot as pltplt.scatter(2, 4, s=200)# 設置圖表標題并給坐標軸加上標簽
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)# 設置刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)plt.show()

繪制一系列點

要繪制一系列的點,可向 scatter() 傳遞兩個分別包含x值和y值的列表,如下所示:

import matplotlib.pyplot as pltx_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]plt.scatter(x_values, y_values, s=200)# 設置圖表標題并給坐標軸加上標簽
--snip--
  • 列表x_values包含要計算其平方值的數字,而列表y_values包含前述每個數字的平方值。
  • 將這些列表傳遞給scatter()時,matplotlib依次從每個列表中讀取一個值來繪制一個點。

自動計算數據

手工計算列表要包含的值可能效率低下,需要繪制的點很多時尤其如此。可以不必手工計算包含點坐標的列表,而讓Python循環來替我們完成這種計算。下面是繪制1000個點的代碼:

import matplotlib.pyplot as pltx_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]plt.scatter(x_values, y_values, s=40)# 設置圖表標題并給坐標軸加上標簽
--snip--# 設置每個坐標軸的取值范圍
plt.axis([0, 1100, 0, 1100000])plt.show()
  • 我們首先創建了一個包含 x值的列表,其中包含數字1~1000。接下來是一個生成 y值的列表解析,它遍歷 x值(for x in x_values),計算其平方值(x**2),并將結果存儲到列表y_values中。然后,將輸入列表和輸出列表傳遞給scatter()。
  • 由于這個數據集較大,我們將點設置得較小,并使用函數axis()指定了每個坐標軸的取值范圍。函數axis()要求提供四個值:x和 y坐標軸的最小值和最大值。在這里,我們將 x坐標軸的取值范圍設置為0~1100,并將 y坐標軸的取值范圍設置為0~1 100 000。

刪除數據點的輪廓

matplotlib 允許你給散點圖中的各個點指定顏色。默認為藍色點和黑色輪廓,在散點圖包含的數據點不多時效果很好。但繪制很多點時,黑色輪廓可能會粘連在一起。要刪除數據點的輪廓,可在調用scatter()時傳遞實參edgecolor='none':

plt.scatter(x_values, y_values, edgecolor='none', s=40)
自定義顏色

要修改數據點的顏色,可向scatter() 傳遞參數c,并將其設置為要使用的顏色的名稱,如下所示:

plt.scatter(x_values, y_values, c='red', edgecolor='none', s=40)

你還可以使用RGB顏色模式自定義顏色。要指定自定義顏色,可傳遞參數c,并將其設置為一個元組,其中包含三個0~1之間的小數值,它們分別表示紅色、綠色和藍色分量。例如,下面的代碼行創建一個由淡藍色點組成的散點圖:值越接近0,指定的顏色越深,值越接近1,指定的顏色越淺。

plt.scatter(x_values, y_values, c=(0, 0, 0.8), edgecolor='none', s=40)
使用顏色映射

顏色映射(colormap)是一系列顏色,它們從起始顏色漸變到結束顏色。在可視化中,顏色映射用于突出數據的規律,例如,你可能用較淺的顏色來顯示較小的值,并使用較深的顏色來顯示較大的值。

模塊pyplot內置了一組顏色映射。要使用這些顏色映射,你需要告訴pyplot該如何設置數據集中每個點的顏色。下面演示了如何根據每個點的 y值來設置其顏色:

plt.scatter(x_values, y_values, c=y_values , cmap=plt.cm.Blues, edgecolor='none', s=40)
  • 我們將參數 c 設置成了一個 y 值列表,并使用參數cmap告訴pyplot使用哪個顏色映射。這些代碼將 y值較小的點顯示為淺藍色,并將 y 值較大的點顯示為深藍色。

自動保存圖表

要讓程序自動將圖表保存到文件中,可將對plt.show()的調用替換為對plt.savefig()的調用:

plt.savefig('squares_plot.png', bbox_inches='tight')
  • 第一個實參指定要以什么樣的文件名保存圖表,這個文件將存儲到scatter_squares.py所在的目錄中;第二個實參指定將圖表多余的空白區域裁剪掉。如果要保留圖表周圍多余的空白區域,可省略這個實參。
4、隨機漫步

隨機漫步是這樣行走得到的路徑:每次行走都完全是隨機的,沒有明確的方向,結果是由一系列隨機決策決定的。你可以這樣認為,隨機漫步就是螞蟻在暈頭轉向的情況下,每次都沿隨機的方向前行所經過的路徑。

在自然界、物理學、生物學、化學和經濟領域,隨機漫步都有其實際用途。例如,漂浮在水滴上的花粉因不斷受到水分子的擠壓而在水面上移動。水滴中的分子運動是隨機的,因此花粉在水面上的運動路徑猶如隨機漫步。

創建 RandomWalk() 類

為模擬隨機漫步,我們將創建一個名為RandomWalk的類,它隨機地選擇前進方向。這個類需要三個屬性,其中一個是存儲隨機漫步次數的變量,其他兩個是列表,分別存儲隨機漫步經過的每個點的 x和 y坐標。

RandomWalk類只包含兩個方法:__init__()和fill_walk(),其中后者計算隨機漫步經過的所有點。

from random import choiceclass RandomWalk():"""一個生成隨機漫步數據的類"""def __init__(self, num_points=5000):"""初始化隨機漫步屬性"""self.num_points = num_points# 所有隨機漫步都始于(0,0)self.x_values = [0]self.y_values = [0]

為做出隨機決策,我們將所有可能的選擇都存儲在一個列表中,并在每次做決策時都使用choice()來決定使用哪種選擇。接下來,我們將隨機漫步包含的默認點數設置為5000,這大到足以生成有趣的模式,同時又足夠小,可確保能夠快速地模擬隨機漫步。然后,在處,我們創建了兩個用于存儲x和y值的列表,并讓每次漫步都從點(0, 0)出發。

選擇方向

我們將使用fill_walk()來生成漫步包含的點,并決定每次漫步的方向,如下所示。請將這個方法添加到random_walk.py中:

def fill_walk(self):"""計算隨機漫步包含的所有點"""# 不斷漫步,直到列表達到指定的長度while len(self.x_values) < self.num_points:# 決定前進方向以及沿這個方向前進的距離x_direction = choice([1, -1])x_distance = choice([0, 1, 2, 3, 4])x_step = x_direction * x_distancey_direction = choice([1, -1])y_distance = choice([0, 1, 2, 3, 4])y_step = y_direction * y_distance# 拒絕原地踏步if x_step == 0 and y_step == 0:continue# 計算下一個點的x和y值next_x = self.x_values[-1] + x_stepnext_y = self.y_values[-1] + y_stepself.x_values.append(next_x)self.y_values.append(next_y)
  • 第5行,我們建立了一個循環,這個循環不斷運行,直到漫步包含所需數量的點。這個方法的主要部分告訴Python如何模擬四種漫步決定:向右走還是向左走?沿指定的方向走多遠?向上走還是向下走?沿選定的方向走多遠?
  • 我們使用 choice([1, -1]) 給 x_direction 選擇一個值,結果要么是表示向右走的1,要么是表示向左走的-1。接下來,choice([0, 1, 2, 3, 4]) 隨機地選擇一個 0~4 之間的整數,告訴Python 沿指定的方向走多遠(x_distance)。(通過包含0,我們不僅能夠沿兩個軸移動,還能夠沿y軸移動。)
  • 第9和13行,我們將移動方向乘以移動距離,以確定沿 x 和 y 軸移動的距離。如果x_step為正,將向右移動,為負將向左移動,而為零將垂直移動;如果y_step為正,就意味著向上移動,為負意味著向下移動,而為零意味著水平移動。
  • 如果 x_step 和 y_step 都為零,則意味著原地踏步,我們拒絕這樣的情況,接著執行下一次循環。為獲取漫步中下一個點的 x值,我們將 x_step 與 x_values 中的最后一個值相加,對于 y 值也做相同的處理。獲得下一個點的 x 值和 y 值后,我們將它們分別附加到列表 x_values 和 y_values 的末尾。

繪制隨機漫步圖

下面的代碼將隨機漫步的所有點都繪制出來:rw_visual.py

import matplotlib.pyplot as plt
from random_walk import RandomWalk# 創建一個RandomWalk實例,并將其包含的點都繪制出來
rw = RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values, rw.y_values, s=15)plt.show()
  • 首先導入了模塊pyplot和RandomWalk類,然后創建了一個RandomWalk實例,并將其存儲到rw中,再調用fill_walk()。我們將隨機漫步包含的 x 和 y 值傳遞給scatter(),并選擇了合適的點尺寸。下圖顯示了包含5000個點的隨機漫步圖。

模擬多次隨機漫步

每次隨機漫步都不同,因此探索可能生成的各種模式很有趣。要在不多次運行程序的情況下使用前面的代碼模擬多次隨機漫步,一種辦法是將這些代碼放在一個while循環中,如下所示:rw_visual.py

import matplotlib.pyplot as plt
from random_walk import RandomWalk# 只要程序處于活動狀態,就不斷地模擬隨機漫步
while True:# 創建一個RandomWalk實例,并將其包含的點都繪制出來rw = RandomWalk()rw.fill_walk()plt.scatter(rw.x_values, rw.y_values, s=15)plt.show()keep_running = input("Make another walk?(y/n): ")if keep_running == 'n':break
給點著色

我們將使用顏色映射來指出漫步中各點的先后順序,并刪除每個點的黑色輪廓,讓它們的顏色更明顯。為根據漫步中各點的先后順序進行著色,我們傳遞參數c,并將其設置為一個列表,其中包含各點的先后順序。由于這些點是按順序繪制的,因此給參數c指定的列表只需包含數字1~5000,如下所示:rw_visual.py

--snip--
# 只要程序處于活動狀態,就不斷地模擬隨機漫步
while True:# 創建一個RandomWalk實例,并將其包含的點都繪制出來--snip--point_numbers = list(range(rw.num_points))plt.scatter(rw.x_values, rw.y_values, c=point_numbers,cmap=plt.cm.Blues, edgecolor='none', s=15)plt.show()--snip--
  • 我們使用了range()生成了一個數字列表,其中包含的數字個數與漫步包含的點數相同。接下來,我們將這個列表存儲在point_numbers中,以便后面使用它來設置每個漫步點的顏色。我們將參數c設置為point_numbers,指定使用顏色映射Blues,并傳遞實參edgecolor=none 以刪除每個點周圍的輪廓。最終的隨機漫步圖從淺藍色漸變為深藍色。

除了給隨機漫步的各個點著色,以指出它們的先后順序外,如果還能呈現隨機漫步的起點和終點就更好了。為此,可在繪制隨機漫步圖后重新繪制起點和終點。我們讓起點和終點變得更大,并顯示為不同的顏色,以突出它們,如下所示:rw_visual.py

--snip--
# 只要程序處于活動狀態,就不斷地模擬隨機漫步
while True:# 創建一個RandomWalk實例,并將其包含的點都繪制出來--snip--point_numbers = list(range(rw.num_points))plt.scatter(rw.x_values, rw.y_values, c=point_numbers,cmap=plt.cm.Blues, edgecolor='none', s=15)# 突出起點和終點plt.scatter(0, 0, c='green', edgecolors='none', s=100)plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100)plt.show()--snip--

增加點數

下面來增加點數,以提供更多的數據。為此,我們在創建RandomWalk實例時增大 num_points 的值,并在繪圖時調整每個點的大小,如下所示:rw_visual.py

--snip--# 只要程序處于活動狀態,就不斷地模擬隨機漫步
while True:# 創建一個RandomWalk實例,并將其包含的點都繪制出來rw = RandomWalk(50000)rw.fill_walk()point_numbers = list(range(rw.num_points))plt.scatter(rw.x_values, rw.y_values, c=point_numbers,cmap=plt.cm.Blues, edgecolor='none', s=1)--snip--
  • 這個示例模擬了一次包含50 000個點的隨機漫步(以模擬現實情況),并將每個點的大小都設置為1。
  • 最終的隨機漫步圖更纖細,猶如云朵,如圖所示,我們使用簡單的散點圖制作出了一件藝術品!

調整尺寸

圖表適合屏幕大小時,更能有效地將數據中的規律呈現出來。為讓繪圖窗口更適合屏幕大小,可像下面這樣調整matplotlib輸出的尺寸:rw_visual.py

--snip--
# 只要程序處于活動狀態,就不斷地模擬隨機漫步
while True:# 創建一個RandomWalk實例,并將其包含的點都繪制出來rw = RandomWalk(50000)rw.fill_walk()point_numbers = list(range(rw.num_points))# 設置繪圖窗口的尺寸plt.figure(figsize=(10,6))--snip--
  • 函數figure()用于指定圖表的寬度、高度、分辨率和背景色。你需要給形參figsize指定一個元組,向matplotlib指出繪圖窗口的尺寸,單位為英寸。
  • Python假定屏幕分辨率為80像素/英寸,如果上述代碼指定的圖表尺寸不合適,可根據需要調整其中的數字。如果你知道自己的系統的分辨率,可使用形參dpi向figure()傳遞該分辨率,以有效地利用可用的屏幕空間,如下所示:plt.figure(dpi=128, figsize=(10, 6))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717037.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717037.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717037.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

最簡單的ubuntu遠程桌面方法

最簡單的ubuntu遠程桌面方法 部署環境&#xff1a;Ubuntu 20.04 LTS 現在最常用的遠程控制Linux系統的方法是通過XRDP、VNC等&#xff0c;但是安裝配置過程繁瑣復雜&#xff0c;經常出現各種問題導致連接失敗&#xff0c;另外一方面延遲較高&#xff0c;操作卡頓。 經過我堅…

【Java項目介紹和界面搭建】拼圖小游戲——鍵盤、鼠標事件

&#x1f36c; 博主介紹&#x1f468;?&#x1f393; 博主介紹&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高興認識大家~ ?主攻領域&#xff1a;【滲透領域】【應急響應】 【Java】 【VulnHub靶場復現】【面試分析】 &#x1f389;點贊?評論?收藏 …

DDS數據分發服務——提升汽車領域數據傳輸效率

1.引言 隨著智能化技術的快速發展&#xff0c;汽車行業正經歷著一場革命性的變革。如今的分布式系統變得越來越復雜且龐大&#xff0c;對網絡通信基數要求在功能和性能層面越來越高。數據分發服務&#xff08;DDS&#xff09;作為一項先進的數據傳輸解決方案&#xff0c;在汽車…

2369. 檢查數組是否存在有效劃分(動態規劃)

2024-3-1 文章目錄 [2369. 檢查數組是否存在有效劃分](https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/)思路&#xff1a;代碼&#xff1a; 2369. 檢查數組是否存在有效劃分 思路&#xff1a; 1.狀態定義:f[i]代表考慮將[0,i]是否能被有效劃…

電腦要用多少V的電源?電腦電源輸入電壓是市電

臺式電源的輸出電壓是多少&#xff1f; 電腦電源輸出一般有三種不同的電壓&#xff0c;分別是&#xff1a; 12V、5V、3.3V。 電腦電源負責給電腦配件供電&#xff0c;如CPU、主板、內存條、硬盤、顯卡等&#xff0c;是電腦的重要組成部分。 工作電流根據不同的硬件及其使用狀…

LeetCode15:三數之和

題目描述 給你一個整數數組 nums &#xff0c;判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i ! j、i ! k 且 j ! k &#xff0c;同時還滿足 nums[i] nums[j] nums[k] 0 。請 你返回所有和為 0 且不重復的三元組。 注意&#xff1a;答案中不可以包含重復的三元組…

【48天筆試強訓】day04

計算糖果 描述 A,B,C三個人是好朋友,每個人手里都有一些糖果,我們不知道他們每個人手上具體有多少個糖果,但是我們知道以下的信息&#xff1a; A - B, B - C, A B, B C. 這四個數值.每個字母代表每個人所擁有的糖果數. 現在需要通過這四個數值計算出每個人手里有多少個糖果…

編程語言:SQL Server數據庫使用教程,SQL Server增刪改查語句

「作者主頁」&#xff1a;士別三日wyx 「作者簡介」&#xff1a;CSDN top100、阿里云博客專家、華為云享專家、網絡安全領域優質創作者 「推薦專欄」&#xff1a;對網絡安全感興趣的小伙伴可以關注專欄《網絡安全自學教程》 SQL Server是微軟提供的一種關系型數據庫&#xff0c…

Python算法100例-3.3 阿姆斯特朗數

完整源代碼項目地址&#xff0c;關注博主私信源代碼后可獲取 1.問題描述2.問題分析3.算法設計4.確定程序框架5.完整的程序6.問題拓展 1&#xff0e;問題描述 如果一個整數等于其各個數字的立方和&#xff0c;則該數稱為“阿姆斯特朗數”&#xff08;亦稱為自戀性數&#xff…

nacos開啟鑒權+springboot配置用戶名密碼

nacos默認沒有開啟鑒權&#xff0c;springboot無需用戶名密碼即可連接nacos。從2.2.2版本開始&#xff0c;默認控制臺也無需登錄直接可進行操作。 因此本文記錄一下如何開啟鑒權&#xff0c;基于nacos2.3.0版本。 編輯nacos服務端的application.properties&#xff1a; # 開…

Linux/Docker 修改系統時區

目錄 1. Linux 系統1.1 通過 timedatectl 命令操作1.2 直接修改 /etc/localtime 文件 2. Docker 容器中的 Linux 操作環境&#xff1a; CentOS / AlmaOSMySQL Docker 鏡像 1. Linux 系統 1.1 通過 timedatectl 命令操作 使用 timedatectl list-timezones 命令列出可用的時區…

uniapp 地圖行車軌跡

文章目錄 uniapp 地圖行車軌跡1、畫地圖2、切換地圖中心點3、畫路線4、軌跡移動5、標記點及自定義內容 uniapp 地圖行車軌跡 官網地圖組件&#xff1a;https://uniapp.dcloud.net.cn/component/map.html 官網地圖組件控制&#xff1a;https://uniapp.dcloud.net.cn/api/locati…

【Java數據結構 -- 二叉樹的基本操作】

二叉樹的基本操作 1.獲取樹中節點的個數1.1 計數器遞歸的思路1.2 子問題思路&#xff1a; 2. 獲取葉子個數3. 獲取第k層節點的個數4.獲取二叉樹的高度5.檢測值為value的元素是否存在 1.獲取樹中節點的個數 思路&#xff1a;整棵樹的節點個數 左子樹的節點個數&#xff0b;右子…

休息日的思考與額外題——雙指針、原地哈希day28

文章目錄 前言一、11. 盛最多水的容器二、41. 缺失的第一個正數三、42. 接雨水總結 前言 一個本碩雙非的小菜雞&#xff0c;備戰24年秋招&#xff0c;計劃二刷完卡子哥的刷題計劃&#xff0c;加油&#xff01; 二刷決定精刷了&#xff0c;于是參加了卡子哥的刷題班&#xff0c…

32單片機基礎:旋轉編碼器計次

接線圖如上圖所示。 我們初始化一下PB0和PB1兩個GPIO口外設中斷&#xff0c;當然&#xff0c;這里只初始化一個外部中斷也能完成功能的對于編碼器而言&#xff0c;下圖所示為正轉的波形。如果把一相的下降沿用作觸發中斷&#xff0c;在中斷時刻讀取另一相的電平&#xff0c;正…

【EXCEL】SUMIFS多次條件篩選數據

問題案例 有如下兩個工作表&#xff08;Sheet1和Sheet2&#xff09;&#xff1a; 在sheet1中的C2行獲得一個結果&#xff08;項目1的1月收入&#xff09;&#xff0c;是對sheet2中的A列篩選出“項目1”B列篩選出“202401”而獲得對應C列的結果。借助excel的公式如何實現。 S…

【算法科目】2024年第二屆全國大學生信息技術認證挑戰賽 題解

圖像壓縮 曾經看到過&#xff0c;這是一道洛谷原題&#xff0c;很可惜我沒做過&#xff0c;有點看不懂就沒嘗試。 原題鏈接&#xff1a;B3851 [GESP202306 四級] 圖像壓縮 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 因數分解 直接枚舉就行了&#xff0c;從2開始找因子&a…

Spring:EnclosingClass工具類分辨

Spring&#xff1a;EnclosingClass工具類分辨 1 前言 通過Spring的工具分辨EnclosingClass類。 測試類如下&#xff1a; package com.xiaoxu.test.enclosingClass;/*** author xiaoxu* date 2024-01-18* java_demo2:com.xiaoxu.test.enclosingClass.Outter*/ public class …

微信小程序(四十六)登入界面-進階版

注釋很詳細&#xff0c;直接上代碼 上一篇 此文使用了vant組件庫&#xff0c;沒有安裝配置的可以參考此篇vant組件的安裝與配置 新增內容&#xff1a; 1.手機號與驗證碼格式驗證 2.驗證碼的網絡申請和校驗 wechat-http模塊在好幾篇以前已經講了咋安裝的&#xff0c;不記得的友…

為什么要用Python?

為什么要用Python&#xff1f; Python簡單易用&#xff1a;提供大量的簡單易用數據結構和內置庫&#xff0c;語法結構也很簡單易讀&#xff0c;不需要使用括號來進行代碼塊分組&#xff0c;也不需要預聲明變量或參數。Python開發效率高&#xff1a;簡單易用的前提下&#xff0…