Python數據可視化科技圖表繪制系列教程(三)

目錄

單一柱狀圖

分組柱狀圖

堆積柱狀圖

百分比柱狀圖

均值柱狀圖

不等寬柱狀圖

有序柱狀圖

條形圖

發散條形圖

在條上添加標簽的發散條形圖

基礎棒棒糖圖1

基礎棒棒糖圖2


【聲明】:未經版權人書面許可,任何單位或個人不得以任何形式復制、發行、出租、改編、匯編、傳播、展示或利用本博客的全部或部分內容,也不得在未經版權人授權的情況下將本博客用于任何商業目的。但版權人允許個人學習、研究、欣賞等非商業性用途的復制和傳播。非常推薦大家學習《Python數據可視化科技圖表繪制》這本書籍。

單一柱狀圖

import pandas as pd  # 導入pandas庫并簡寫為pd
import matplotlib.pyplot as plt  # 導入matplotlib.pyplot模塊并簡寫為plt# 自定義數據集
data = pd.DataFrame({'category': ["A", "B", "C", "D", "E"],'value': [10, 15, 7, 12, 8]})  # 創建一個包含類別和值的DataFrame
# 查看數據結構
print("數據結構:")
print(data)# 創建單一柱狀圖
plt.figure(figsize=(6, 4))  # 創建圖形對象,并設置圖形大小
plt.bar(data['category'], data['value'], color='steelblue')
# 繪制柱狀圖,指定x軸為類別,y軸為值,柱狀顏色為鋼藍色
plt.xlabel('Category')  # 設置x軸標簽
plt.ylabel('Value')  # 設置y軸標簽
plt.title('Single Bar Chart')  # 設置圖表標題# 添加網格線,采用虛線,設置為灰色,透明度為0.5
plt.grid(linestyle='-', color='gray', alpha=0.5)# 保存圖片
plt.savefig('P93單一柱狀圖.png', dpi=600, transparent=True)
plt.show()
單一柱狀圖

分組柱狀圖

import pandas as pd  # 導入pandas庫并簡寫為pd
import matplotlib.pyplot as plt  # 導入matplotlib.pyplot模塊并簡寫為plt# 自定義一個包含多列數據的數據框DataFrame,包含類別和多列值
data = pd.DataFrame({'category': ["A", "B", "C", "D", "E"],'value1': [10, 15, 7, 12, 8], 'value2': [6, 9, 5, 8, 4],'value3': [3, 5, 2, 4, 6], 'value4': [9, 6, 8, 3, 5]})
# 查看數據框
print("Data Structure:")
print(data)  # 輸出如圖43所示# 創建分組柱狀圖
data.plot(x='category', kind='bar', figsize=(6, 4))
# 使用DataFrame的plot方法繪制分組柱狀圖
# 指定x軸為'category'列,圖表類型為'bar',圖形大小為(6,4)
plt.xlabel('Category')  # 設置x軸標簽
plt.xticks(rotation=0)  # 旋轉x軸文本,使其水平顯示
plt.ylabel('Value')  # 設置y軸標簽
plt.title('Grouped Bar Chart')  # 設置圖表標題
plt.legend(title='Values')  # 添加圖例,并設置標題為'Values'# 保存圖片
plt.savefig('P94分組柱狀圖.png', dpi=600, transparent=True)
plt.show()
分組柱狀圖

堆積柱狀圖

import pandas as pd
import matplotlib.pyplot as plt# 自定義一個包含多列數據的數據框DataFrame,包含類別和多列值
data = pd.DataFrame({'category': ["A", "B", "C", "D", "E"],'value1': [10, 15, 7, 12, 8], 'value2': [6, 9, 5, 8, 4],'value3': [3, 5, 2, 4, 6], 'value4': [9, 6, 8, 3, 5]})# 查看數據框
print("Data Structure:")
print(data)# 將'category' 列設置為索引,并創建堆積柱狀圖
data.set_index('category').plot(kind='bar', stacked=True, figsize=(6, 4))
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Stacked Bar Chart')
plt.xticks(rotation=0)# 添加圖例,并設置標題為'Values',并放置在圖的右側
plt.legend(title='Values', loc='center left', bbox_to_anchor=(1, 0.5))# 保存圖片時自動調整邊界
plt.savefig('P95堆積柱狀圖.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
堆積柱狀圖

百分比柱狀圖

import pandas as pd  # 導入pandas庫并簡寫為pd
import matplotlib.pyplot as plt  # 導入matplotlib.pyplot模塊并簡寫為plt# 自定義一個包含多列數據的數據框DataFrame,包含類別和多列值
data = pd.DataFrame({'category': ["A", "B", "C", "D", "E"],'value1': [10, 15, 7, 12, 8], 'value2': [6, 9, 5, 8, 4],'value3': [3, 5, 2, 4, 6], 'value4': [9, 6, 8, 3, 5]})
# 查看數據框
print("Data Structure:")
print(data)  # 輸出如圖43所示# 創建百分比柱狀狀圖
# 復制數據集到新的DataFrame以便進行百分比計算
data_percentage = data.copy()# 計算每個數值列的百分比,除以每行的總和并乘以100
data_percentage.iloc[:, 1:] = data_percentage.iloc[:, 1:].div(data_percentage.iloc[:, 1:].sum(axis=1), axis=0) * 100data_percentage.set_index('category').plot(kind='bar',stacked=True, figsize=(6, 4))
# 創建百分比堆疊柱狀圖,設置索引為'category'列,
# 圖表類型為'bar',堆積模式為True,圖形大小為(6,4)plt.xlabel('Category')  # 設置x軸標簽
plt.ylabel('Percentage')  # 設置y軸標簽
plt.title('Percentage Stacked Bar Chart')  # 設置圖表標題
plt.xticks(rotation=0)  # 旋轉x軸文本,使其水平顯示# 添加圖例,并設置標題為'Values',并放置在圖的右側
plt.legend(title='Values', loc='center left', bbox_to_anchor=(1, 0.5))# 保存圖片時自動調整邊界
plt.savefig('P97百分比柱狀圖.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
百分比柱狀圖

均值柱狀圖

import pandas as pd  # 導入pandas庫并簡寫為pd
import matplotlib.pyplot as plt  # 導入matplotlib.pyplot模塊并簡寫為plt
import seaborn as sns  # 導入seaborn庫并簡寫為sns# 創建創建一個包含類別、值和標準差的DataFrame數據集
data = pd.DataFrame({'category': ["A", "B", "C", "D", "E"],'value': [10, 15, 7, 12, 8], 'std': [1, 2, 1.5, 1.2, 2.5]})# 計算每個類別的均值和標準差
mean_values = data['value']
std_values = data['std']colors = sns.color_palette("Set1", n_colors=len(data))  # 創建顏色調色板
# 創建均值柱狀圖
plt.figure(figsize=(6, 4))  # 創建圖形對象,并設置圖形大小
bars = plt.bar(data['category'], mean_values, color=colors)
# 繪制柱狀圖,指定x軸為類別,y軸為均值,柱狀顏色為顏色調色板中的顏色# 添加誤差線
for i, (bar, std) in enumerate(zip(bars, std_values)):plt.errorbar(bar.get_x() + bar.get_width() / 2, bar.get_height(),# 在柱狀圖的中心位置添加誤差線yerr=std, fmt='none', color='black', ecolor='gray',# 設置誤差線的樣式和顏色capsize=5, capthick=2)  # 設置誤差線的帽子大小和線寬
# 添加標題和標簽
plt.xlabel('Category')  # 設置x軸標簽
plt.ylabel('Mean Value')  # 設置y軸標簽
plt.title('Mean Bar Chart with Error Bars')  # 設置圖表標題# 設置網格線的樣式、顏色和透明度
plt.grid(axis='both', linestyle='-', color='gray', alpha=0.5)# 保存圖片時自動調整邊界
plt.savefig('P98均值柱狀圖.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
均值柱狀圖

不等寬柱狀圖

import pandas as pd
import matplotlib.pyplot as plt# 創建數據集
data = pd.DataFrame({'category': ["A", "B", "C", "D", "E"],'value': [10, 15, 7, 12, 8],'width': [0.8, 0.4, 1.0, 0.5, 0.9]})
print("數據結構:"), print(data)  # 查看數據框,如圖48所示# 自定義顏色列表,每個柱子使用不同的配色
colors = ['red', 'green', 'blue', 'orange', 'purple']
# 創建不等寬柱狀圖
plt.figure(figsize=(6, 4))
for i in range(len(data)):plt.bar(data['category'][i], data['value'][i],width=data['width'][i], color=colors[i])# 添加標題和標簽
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Unequal Width Bar Chart')# 設置網格線
plt.grid(axis='both', linestyle='-', color='gray', alpha=0.5)# 保存圖片時自動調整邊界
plt.savefig('P99不等寬柱狀圖.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
不等寬柱狀圖

有序柱狀圖

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as patchesdf_raw = pd.read_csv(r"E:\PythonProjects\experiments_figures\繪圖案例數據\mpg_ggplot2.csv")  # 讀取原始數據
# 按制造商分組,并計算每個制造商的平均城市里程
df = df_raw[['cty', 'manufacturer']].groupby('manufacturer').apply(lambda x: x.mean())# 按城市里程排序數據
df.sort_values('cty', inplace=True)  # 按城市里程排序數據
df.reset_index(inplace=True)  # 重置索引# 繪圖
# 創建圖形和坐標軸對象
fig, ax = plt.subplots(figsize=(10, 6), facecolor='white', dpi=80)# 使用vlines繪制垂直線條,代表城市里程
ax.vlines(x=df.index, ymin=0, ymax=df.cty, color='firebrick',alpha=0.7, linewidth=20)# 添加文本注釋
# 在每個條形的頂部添加數值標簽
for i, cty in enumerate(df.cty):ax.text(i, cty + 0.5, round(cty, 1), horizontalalignment='center')# 設置標題、標簽、刻度和y軸范圍
ax.set_title('Bar Chart for Highway Mileage',fontdict={'size': 18})  # 設置標題
ax.set(ylabel='Miles Per Gallon', ylim=(0, 30))  # 設置y軸標簽和范圍
plt.xticks(df.index, df.manufacturer.str.upper(), rotation=60,horizontalalignment='right', fontsize=8)  # 設置x軸標簽# 添加補丁以為X軸標簽著色
# 創建兩個補丁對象,用于著色X軸標簽的背景
p1 = patches.Rectangle((.57, -0.005), width=.33, height=.13, alpha=.1,facecolor='green', transform=fig.transFigure)  # 創建綠色補丁
p2 = patches.Rectangle((.124, -0.005), width=.446, height=.13, alpha=.1,facecolor='red', transform=fig.transFigure)  # 創建紅色補丁
# 將補丁對象添加到圖形上
fig.add_artist(p1)  # 添加綠色補丁
fig.add_artist(p2)  # 添加紅色補丁# 保存圖片時自動調整邊界
plt.savefig('P100有序柱狀圖.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
有序柱狀圖

條形圖

import pandas as pd
import matplotlib.pyplot as plt
import randomdf_raw = pd.read_csv(r"E:\PythonProjects\experiments_figures\繪圖案例數據\mpg_ggplot2.csv")  # 導入數據
# 準備數據
df = df_raw.groupby('manufacturer').size().reset_index(name='counts')
# 按制造商分組并計算每個制造商的數量
n = df['manufacturer'].unique().__len__() + 1  # 獲取唯一制造商的數量
all_colors = list(plt.cm.colors.cnames.keys())  # 獲取所有可用的顏色
random.seed(100)  # 設置隨機種子,確保每次運行生成的顏色相同
c = random.choices(all_colors, k=n)  # 從顏色列表中隨機選擇 n 個顏色# 繪制條形圖
plt.figure(figsize=(10, 6), dpi=80)  # 設置圖形大小
plt.barh(df['manufacturer'], df['counts'], color=c,height=.5)  # 繪制水平條形圖,X軸為counts,Y軸為manufacturer
for i, val in enumerate(df['counts'].values):  # 遍歷每個條形并在右側添加數值標簽plt.text(val, i, float(val), horizontalalignment='left',verticalalignment='center', fontdict={'fontweight': 500, 'size': 12})# 添加修飾
plt.gca().invert_yaxis()  # 反轉Y軸,確保順序正確顯示
plt.title("Number of Vehicles by Manufacturers",fontsize=18)  # 設置標題和字體大小
plt.xlabel('# Vehicles')  # 設置x軸標簽
plt.xlim(0, 45)  # 設置x軸的范圍# 保存圖片時自動調整邊界
plt.savefig('P103條形圖.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
條形圖

發散條形圖

import pandas as pd
import matplotlib.pyplot as pltdf = pd.read_csv(r"E:\PythonProjects\experiments_figures\繪圖案例數據\mtcars1.csv")  # 讀取數據# 提取'mpg'列作為x變量,并計算其標準化值
x = df.loc[:, ['mpg']]
df['mpg_z'] = (x - x.mean()) / x.std()
# 根據'mpg_z'列的值確定顏色
df['colors'] = ['red' if x < 0 else 'green' for x in df['mpg_z']]df.sort_values('mpg_z', inplace=True)  # 根據'mpg_z'列的值對數據進行排序
df.reset_index(inplace=True)  # 重置索引# 繪制圖形 ①
plt.figure(figsize=(10, 8), dpi=600)
plt.hlines(y=df.index, xmin=0, xmax=df.mpg_z, color=df.colors,alpha=0.4, linewidth=5)# 圖形修飾
plt.gca().set(ylabel='$Model$', xlabel='$Mileage$')  # 設置y軸和x軸標簽
plt.yticks(df.index, df.cars, fontsize=12)  # 設置y軸刻度標簽和字體大小
plt.title('Diverging Bars of Car Mileage',fontdict={'size': 20})  # 設置標題和字體大小
plt.grid(linestyle='--', alpha=0.5)  # 添加網格線# 保存圖片時自動調整邊界
plt.savefig('P104發散條形圖.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
發散條形圖

在條上添加標簽的發散條形圖

import pandas as pd
import matplotlib.pyplot as pltdf = pd.read_csv(r"E:\PythonProjects\experiments_figures\繪圖案例數據\mtcars1.csv")  # 讀取數據# 提取'mpg'列作為x變量,并計算其標準化值
x = df.loc[:, ['mpg']]
df['mpg_z'] = (x - x.mean()) / x.std()
# 根據'mpg_z'列的值確定顏色
df['colors'] = ['red' if x < 0 else 'green' for x in df['mpg_z']]df.sort_values('mpg_z', inplace=True)  # 根據'mpg_z'列的值對數據進行排序
df.reset_index(inplace=True)  # 重置索引plt.figure(figsize=(10, 8), dpi=600)
plt.hlines(y=df.index, xmin=0, xmax=df.mpg_z)# 在條形上添加標簽
for x, y, tex in zip(df.mpg_z, df.index, df.mpg_z):t = plt.text(x, y, round(tex, 2),horizontalalignment='right' if x < 0 else 'left',verticalalignment='center',fontdict={'color': 'red' if x < 0 else 'green', 'size': 12})# 圖形修飾
plt.gca().set(ylabel='$Model$', xlabel='$Mileage$')  # 設置y軸和x軸標簽
plt.yticks(df.index, df.cars, fontsize=12)  # 設置y軸刻度標簽和字體大小
plt.title('Diverging Bars of Car Mileage',fontdict={'size': 20})  # 設置標題和字體大小
plt.grid(linestyle='--', alpha=0.5)  # 添加網格線
plt.xlim(-2.5, 2.5)  # 設置x軸范圍# 保存圖片時自動調整邊界
plt.savefig('P105在條上添加標簽的發散條形圖.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
在條上添加標簽的發散條形圖

基礎棒棒糖圖1

import matplotlib.pyplot as plt
import numpy as np# 創建數據
np.random.seed(19781101)  # 固定隨機種子,以便結果可復現
values = np.random.uniform(size=40)  # 生成40個0到1之間的隨機數
positions = np.arange(len(values))  # 生成與values長度相同的位置數組plt.figure(figsize=(10, 6))  # 創建圖形窗口大小# 繪制沒有標記的圖形
plt.subplot(2, 2, 1)  # 創建一個2x2的子圖矩陣,并選擇第1個子圖
plt.stem(values, markerfmt=' ')  # 繪制棒棒糖圖,沒有標記
plt.title("No Markers")  # 設置子圖標題# 改變顏色、形狀、大小和邊緣
plt.subplot(2, 2, 2)  # 選擇第2個子圖
(markers, stemlines, baseline) = plt.stem(values)  # 獲取棒棒糖圖的組件
plt.setp(markers, marker='D', markersize=6,markeredgecolor="orange", markeredgewidth=2)  # 設置標記屬性
plt.title("Custom Markers")  # 設置子圖標題# 繪制沒有標記的圖形(水平展示)
plt.subplot(2, 2, 3)  # 選擇第3個子圖
plt.hlines(y=positions, xmin=0, xmax=values, color='skyblue')  # 繪制水平線
plt.plot(values, positions, ' ')  # 繪制數據點
plt.title("Horizontal No Markers")  # 設置子圖標題# 改變顏色、形狀、大小和邊緣進行水平展示
plt.subplot(2, 2, 4)  # 選擇第4個子圖
plt.hlines(y=positions, xmin=0, xmax=values, color='skyblue')  # 繪制水平線
plt.plot(values, positions, 'D', markersize=6,markeredgecolor="orange", markerfacecolor="orange",markeredgewidth=2)  # 繪制數據點,并設置屬性
plt.title("Horizontal Custom Markers")  # 設置子圖標題plt.tight_layout()  # 自動調整子圖布局# 保存圖片時自動調整邊界
plt.savefig('P107基礎棒棒糖圖1.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
基礎棒棒糖圖1

基礎棒棒糖圖2

import pandas as pd
import matplotlib.pyplot as pltdf_raw = pd.read_csv(r"E:\PythonProjects\experiments_figures\繪圖案例數據\mpg_ggplot2.csv")  # 讀取原始數據
# 按制造商分組,并計算每個制造商的平均城市里程
df = df_raw[['cty', 'manufacturer']].groupby('manufacturer').apply(lambda x: x.mean())# 按城市里程排序數據
df.sort_values('cty', inplace=True)
df.reset_index(inplace=True)# 繪圖
fig, ax = plt.subplots(figsize=(12, 8), dpi=80)# 使用vlines繪制垂直線條,代表城市里程的起始點
ax.vlines(x=df.index, ymin=0, ymax=df.cty, color='firebrick',alpha=0.7, linewidth=2)# 使用scatter繪制lollipop的圓點
ax.scatter(x=df.index, y=df.cty, s=75, color='firebrick', alpha=0.7)# 設置標題、標簽、刻度和y軸范圍
ax.set_title('Lollipop Chart for Highway Mileage',fontdict={'size': 20})  # 設置標題
ax.set_ylabel('Miles Per Gallon')  # 設置y軸標簽
ax.set_xticks(df.index)  # 設置x軸刻度位置
ax.set_xticklabels(df.manufacturer.str.upper(), rotation=60,fontdict={'horizontalalignment': 'right', 'size': 12})  # 設置x軸刻度標簽
ax.set_ylim(0, 30)  # 設置y軸范圍# 添加注釋
# 使用for循環遍歷DataFrame的每一行,并在每個lollipop的頂部添加城市里程的數值
for row in df.itertuples():ax.text(row.Index, row.cty + 0.5, s=round(row.cty, 2),horizontalalignment='center', verticalalignment='bottom',fontsize=14)# 保存圖片時自動調整邊界
plt.savefig('P107基礎棒棒糖圖2.png', dpi=600, bbox_inches='tight', transparent=True)
plt.show()
基礎棒棒糖圖2

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

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

相關文章

JavaScript 數組與流程控制:從基礎操作到實戰應用

在 JavaScript 編程的世界里&#xff0c;數組是一種極為重要的數據結構&#xff0c;它就像是一個有序的 “收納盒”&#xff0c;能夠將多個值整齊地存儲起來。而流程控制語句則像是 “指揮官”&#xff0c;能夠按照特定的邏輯對數組進行遍歷和操作。接下來&#xff0c;就讓我們…

十(1). 強制類型轉換

繼第十部分C強制類型轉換的四種方式&#xff0c;再進行強化鞏固一下知識點 static_cast 最常用的&#xff0c;在指針之間做轉換 const_cast 去除常量屬性 dynamic_cast 用在基類和派生類之間的轉換 reinterpret_cast 在任意類型之間進行轉 10.1 static_cast 常見的使用場景&am…

Git版本控制工具詳解

如何區分開發環境和生產環境呢 答案就是寫不同的配置文件&#xff0c;開發的設置成開發需要的&#xff0c;生產的設置成生產需要的&#xff0c;共同放到config這個配置文件夾下面&#xff0c;開發和生成的時候分別加載不同的配置文件 方式二就是使用相同的一個入口配置文件&a…

反向傳播的核心是什么:計算損失函數對可訓練參數的梯度=== 損失函數能通過計算圖連接到可訓練參數

反向傳播的核心是什么:計算損失函數對可訓練參數的梯度 損失函數能通過計算圖連接到可訓練參數 在深度學習中,反向傳播的核心是計算損失函數對可訓練參數的梯度,從而更新這些參數。對于LLM(大型語言模型)而言,是否需要“LLM輸出的參數”才能進行反向傳播 一、反向傳播…

KINGCMS被入侵

現象會強制跳轉到 一個異常網站,請掉截圖代碼. 代碼中包含經過混淆處理的JavaScript&#xff0c;它使用了一種技術來隱藏其真實功能。代碼中使用了eval函數來執行動態生成的代碼&#xff0c;這是一種常見的技術&#xff0c;惡意腳本經常使用它來隱藏其真實目的。 這段腳本會檢…

深入探索串的高級操作:從算法到 LeetCode 實戰

串是編程中最常用的數據結構之一&#xff0c;從簡單的文本處理到復雜的文本匹配算法&#xff0c;串的應用無處不在。在掌握了串的基本概念、存儲結構以及KMP算法之后&#xff0c;現在讓我們深入探索串的更多高級操作&#xff0c;例如求子串、串的替換等&#xff0c;并通過LeetC…

在rocky linux 9.5上在線安裝 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …

OneNet + openssl + MTLL

1.OneNet 使用的教程 1.在網絡上搜索onenet&#xff0c;注冊并且登錄賬號。 2.產品服務-----物聯網服務平臺立即體驗 3.在底下找到立即體驗進去 4.產品開發------創建產品 5.關鍵是選擇MQTT&#xff0c;其他的內容自己填寫 6.這里產品以及開發完成&#xff0c;接下來就是添加設…

【Fiddler工具判斷前后端Bug】

Fiddler工具判斷前后端Bug的方法 使用Fiddler抓包工具可以高效定位問題是出在前端還是后端&#xff0c;主要通過分析請求和響應的內容、狀態碼、數據格式等關鍵信息。 分析請求是否成功發送 檢查請求是否從客戶端正確發出&#xff0c;觀察Fiddler抓取的請求列表。若請求未出…

【論文閱讀筆記】《A survey on deep learning approaches for text-to-SQL》

文章目錄 一、論文基本信息1. 文章標題2. 所屬刊物/會議3. 發表年份4. 作者列表5. 發表單位 二、摘要三、解決問題四、創新點五、自己的見解和感想六、研究背景七、研究方法&#xff08;模型、實驗數據、評估指標&#xff09;八、總結&#xff08;做了什么、得到了什么、有什么…

【強連通分量 縮點 最長路 拓撲排序】P2656 采蘑菇|普及+

本文涉及知識點 C圖論 強連通分量 縮點 最長路 拓撲排序 P2656 采蘑菇 題目描述 小胖和 ZYR 要去 ESQMS 森林采蘑菇。 ESQMS 森林間有 N N N 個小樹叢&#xff0c; M M M 條小徑&#xff0c;每條小徑都是單向的&#xff0c;連接兩個小樹叢&#xff0c;上面都有一定數量的…

Dubbo Logback 遠程調用攜帶traceid

背景 A項目有調用B項目的服務&#xff0c;A項目使用 logback 且有 MDC 方式做 traceid&#xff0c;調用B項目的時候&#xff0c;traceid 沒傳遞過期&#xff0c;導致有時候不好排查問題和鏈路追蹤 準備工作 因為使用的是 alibaba 的 dubbo 所以需要加入單獨的包 <depend…

nodejs:用 nodemailer 發送一封帶有附件的郵件

我們將使用 nodemailer 庫來發送帶有附件的郵件。 首先&#xff0c;確保已經安裝了nodemailer。如果沒有安裝&#xff0c;可以通過 npm install nodemailer 來安裝。 cnpm install nodemailer --save dependencies: – nodemailer ^7.0.3 步驟&#xff1a; 引入nodemailer模…

Scade 語言概念 - 方程(equation)

在 Scade 6 程序中自定義算子(Operator)的定義、或數據流定義(data_def)的內容中&#xff0c;包含一種基本的語言結構&#xff1a;方程(equation)(注1)。在本篇中&#xff0c;將敘述 Scade 語言方程的文法形式&#xff0c;以及作用。 注1: 對 Scade 中的 equation, 或 equation…

STM32開發,創建線程棧空間大小判斷

1. 使用RTOS提供的API函數&#xff08;以FreeRTOS為例&#xff09; 函數原型&#xff1a;UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask)功能&#xff1a;獲取指定任務堆棧中剩余的最小空間&#xff08;以字為單位&#xff0c;非字節&#xff09;。使用步驟&am…

thinkphp8.1 調用巨量廣告API接口,刷新token

1、在mysql中建立表sys_token; CREATE TABLE sys_token (id int UNSIGNED NOT NULL,access_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,expires_in datetime NOT NULL,refresh_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,refresh_token_expires_in …

【leetcode】遞歸,回溯思想 + 巧妙解法-解決“N皇后”,以及“解數獨”題目

&#x1f4da;?前言 &#x1f31f; 本期內容亮點&#xff1a;我們將深入解析力扣&#xff08;LeetCode&#xff09;上的幾道經典算法題&#xff0c;涵蓋不同難度和題型&#xff0c;幫助大家掌握解題思路和代碼實現技巧。無論是準備面試還是提升算法能力&#xff0c;這些題解都…

【iOS安全】iPhone X iOS 16.7.11 (20H360) WinRa1n 越獄教程

前言 越獄iPhone之后&#xff0c;一定記得安裝一下用于屏蔽更新的描述文件&#xff08;可使用愛思助手&#xff09; 因為即便關閉了自動更新&#xff0c;iPhone仍會在某些時候自動更新系統&#xff0c;導致越獄失效&#xff1b;更為嚴重的是&#xff0c;更新后的iOS版本可能是…

??高頻通信與航天電子的材料革命:獵板PCB高端壓合基材技術解析??

—聚酰亞胺/陶瓷基板在5G與航天場景的產業化應用?? ??一、極端環境材料體系&#xff1a;突破溫域與頻率極限?? ??聚酰亞胺基板&#xff08;PI&#xff09;的航天級穩定性?? 獵板在衛星通信PCB中采用真空層壓工藝處理聚酰亞胺基材&#xff08;Dk≈10.2&#xff09;&a…

pikachu靶場通關筆記13 XSS關卡09-XSS之href輸出

目錄 一、href 1、常見取值類型 2、使用示例 3、安全風險 二、源碼分析 1、進入靶場 2、代碼審計 3、滲透思路 三、滲透實戰 1、注入payload1 2、注入payload2 3、注入payload3 本系列為通過《pikachu靶場通關筆記》的XSS關卡(共10關&#xff09;滲透集合&#xff…