使用大語言模型進行Python圖表可視化

Python使用matplotlib進行可視化一直有2個問題,一是代碼繁瑣,二是默認模板比較丑。因此發展出seaborn等在matplotlib上二次開發,以更少的代碼進行畫圖的和美化的庫,但是這也帶來了定制化不足的問題。在大模型時代,這個問題有了另一種解法,即使用大模型直接生成代碼,解決了代碼繁瑣(代碼雖長但不用手寫)的問題。

一、使用大模型生成代碼進行可視化

使用大模型生成想要的代碼需要精準的提示詞描述,否則大模型會根據自己的理解畫圖。為了讓大模型能夠精準的理解我們的意圖,我把畫圖的設置進行了整理。同時把大模型生成的代碼中的最佳實踐列出來,便于大模型按照最佳的方法輸出代碼,避免大模型自創錯誤的方法。
需要畫圖時更改要求并把代碼作為案例一并提交大模型生成代碼。下面的需求是給大模型的輸入所以,為了讓大模型輸出更精準,所以把關鍵把代碼和自然語言混編。
本文主要解決三個問題
1、給出一個各類圖標的基礎設置提示詞模板,保證大模型能一次性按需生成需要的模型,避免反復與大模型多輪對話。
2、給出代碼的最佳實踐和指定易錯的API,避免大模型生成錯誤代碼
3、各類圖表的使用場景和樣式。

畫圖一:使用Python 繪制柱圖

使用Python畫柱圖,數據如下,其中x軸是 y軸是
1、使用顏色 #1E9ED9表示平均RSRP。
2、設置字體為漢字宋體。圖標題字體為24,其他為18
3、全局設置mpl.rcParams[‘figure.dpi’] = 1080
4、每個 bar 顯示標簽,位置在bar的頂端而不是內部,label_type=‘edge’
5、bar無邊框
6、縱軸標簽為“平均RSRP(dbm)”從0開始
7、為了保障距離上邊框的距離,縱軸最大刻度是ax.margins(y=0.2) ,頂部留20%空間
8、橫軸標簽為方案一、方案二。
9、橫軸縮短每個bar的寬度和縮短兩個bar 間的距離。
10、橫軸使用margin()函數讓最右邊的bar距離右邊框和最左邊的bar 距離左邊框距離一致ax.margins(x=margin ) # 頂部留20%空間
核心布局參數系統
bar_width = 0.28 # 柱體寬度
bar_spacing = 0.12 # 柱間間距
margin = 0.12 # 新增邊界控制參數 (建議范圍0-0.3)
11、圖標題為主覆蓋站點選擇
12、整個圖像要加粗線的外邊框

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np# 全局參數配置
mpl.rcParams['figure.dpi'] = 1080  # 設置分辨率
plt.rcParams['font.sans-serif'] = ['SimSun']  # 設置宋體
plt.rcParams['axes.unicode_minus'] = False   # 顯示負號# 核心數據與參數
data = [-89.68, -84.27]
labels = ['方案一', '方案二']
bar_color = '#1E9ED9'# 布局控制系統
bar_width = 0.12      # 柱體寬度
bar_spacing = 0.28    # 柱間間距
margin = 0.24         # 邊界對稱控制參數# 創建畫布與坐標系
fig, ax = plt.subplots(figsize=(10, 7))# 橫坐標定位引擎
x_base = np.arange(len(labels))  # 基準定位點 [0, 1]
x_pos = x_base * (bar_width + bar_spacing)  # 精確柱體定位# 繪制柱狀圖系統
bars = ax.bar(x_pos, data,width=bar_width,color=bar_color,edgecolor='none')  # 無邊框設置# 數據標簽渲染器
ax.bar_label(bars,labels=[f'{v:.2f}' for v in data],label_type='edge',  # 將標簽放置在柱子頂端padding=5,          # 調整標簽與柱子頂端的距離fontsize=18,color='black')# 坐標軸配置系統
ax.set_xticks(x_pos)
ax.set_xticklabels(labels, fontsize=18)
ax.set_ylabel('平均RSRP(dBm)', fontsize=18)
#ax.set_title('主覆蓋站點選擇', fontsize=24)# 縱軸顯示優化
ax.set_ylim(0, max(data) * 1.2)  # 強制從0開始
ax.invert_yaxis()  # 數值倒置顯示
ax.margins(y=0.2)  # 頂部留20%空間# 邊界對稱控制系統
ax.margins(x=margin)  # 左右對稱留白# 邊框強化模塊
for spine in ax.spines.values():spine.set_linewidth(2.5)  # 邊框加粗# 生成最終圖像
plt.show()

畫圖二、使用Python 繪制直方圖

使用Python 繪制頻數分布直方圖:

1、圖像布局
使用顏色 #1E9ED9表示平均RSRP。
設置字體為漢字宋體,并解決負號顯示問。
圖標題字體為24,其他為18
圖標題為:RSRP
全局設置mpl.rcParams[‘figure.dpi’] = 1080
圖例放在右下角legend,去除外框。
在圖像的右上角要加入plt.text 均值: 標準差:
為了保障距離上邊框的距離,頂部留20%空間是ax.margins(y=0.2) ,
2、坐標軸
x軸標簽為方案一、方案二。
y軸為“平均RSRP(dbm)” 從0開始,0在最下面。
3、標簽和網格線
將標簽放在柱子頂端,只顯示非0標簽。
相鄰等高的柱子,標簽要錯開(可以去掉,bar等高標簽防止重疊 from adjustText import adjust_text)
不顯示網格線
4、其他元素
在均值的位置加一根紅虛線

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
# 設置字體為宋體并解決負號顯示問題
plt.rcParams['font.sans-serif'] = ['SimSun']  # 設置全局字體為宋體
plt.rcParams['axes.unicode_minus'] = False  # 解決負號顯示問題# 數據列表
data = [-92.3, -92.6, -86.6, -84.9, -89.2, -86, -87.9, -90.9, -87.9, -84.4,-89.1, -84.3, -96.9, -86.5, -88.7, -89.9, -88.7, -95, -89.7, -87.9,-84.6, -90.6, -91.4, -90.5, -86.3, -88, -90.6, -87.5, -88.7, -86.1
]mean_value = sum(data) / len(data)
std_value = np.std(data)plt.figure(figsize=(10, 6))
bins = np.linspace(-100, -80, 15)
n, bins, patches = plt.hist(data,bins=bins,color='#1E9ED9',  # 使用顏色 #1E9ED9edgecolor='black',alpha=0.8)# 在每個 bar 的頂端顯示標簽
for i, patch in enumerate(patches):height = n[i]if height > 0:  # 只顯示非零高度的標簽plt.text(patch.get_x() + patch.get_width() / 2, height + 0.1, str(int(height)),ha='center', va='bottom', fontsize=10, fontname='SimSun')# 添加均值紅虛線,并設置圖例標簽
plt.axvline(x=mean_value, color='red', linestyle='--', label=f'均值: {mean_value:.2f} dBm')# 設置標題和坐標軸標簽
plt.title('RSRP數據分布直方圖', fontsize=20)
plt.xlabel('RSRP值 (dBm)', fontsize=16)
plt.ylabel('頻數', fontsize=16)# 設置縱軸最大刻度并留出頂部空間
ax = plt.gca()
ax.margins(y=0.2)  # 縱軸頂部留 20% 空間
ax.yaxis.set_major_locator(MaxNLocator(integer=True))  # 縱軸刻度設置為整數# 設置橫軸范圍
plt.xlim(-100, -80)  # 橫軸從 -100 到 -80# 添加圖例
plt.legend(loc='lower right', fontsize=10, frameon=True, edgecolor='black')  # 圖例在右上角# 在圖像右上角加入均值和標準差
plt.text(0.95, 0.95, f'均值: {mean_value:.2f} dBm\n標準差: {std_value:.2f} dBm',transform=ax.transAxes, fontsize=10, fontname='SimSun',verticalalignment='top', horizontalalignment='right',bbox=dict(boxstyle="round", facecolor="white", edgecolor="black"))# 加粗所有邊框
for spine in ax.spines.values():spine.set_linewidth(1.5)# 調整布局
plt.tight_layout()# 顯示圖像
plt.show()

畫圖三、使用Python 繪制箱線圖

1、使用顏色 #DB472A作圖。
2、設置字體為漢字宋體。
3、箱線圖縱向顯示
4、異常值用紅點顯示不要紅點無邊框
5、箱線圖箱體填充
6、清空Y軸刻度系統ax.set_yticks([])
7、箱線圖橫放

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd# 全局參數設置
plt.rcParams['font.sans-serif'] = ['Arial']  # 替換為 Arial 字體
plt.rcParams['axes.unicode_minus'] = False# 數據集
data = [13.15, 14.35, 14.15, 10.72, 16.35, 16.24, 15.42, 14.65, 10.87, 14.05,14.3, 12.83, 14.88, 16.69, 21.44, 15.96, 16.22, 15.16, 9.26, 15.32,15.59, 23.28, 14.78, 16.36, 15.29, 11.66, 19.06, 17.81, 17.93, 12.49
]# 創建畫布
fig, ax = plt.subplots()# 繪制橫向箱線圖
box = ax.boxplot(data,vert=False,patch_artist=True,flierprops={'marker': 'o', 'markerfacecolor': 'red','markeredgecolor': 'none'},boxprops={'color': '#DB472A', 'facecolor': '#DB472A'},whiskerprops={'color': '#DB472A'},capprops={'color': '#DB472A'},medianprops={'color': 'white'})# 計算統計量
mean_val = np.mean(data)
stats = [np.min(data), np.percentile(data, 25), np.median(data), np.percentile(data, 75), np.max(data)]# 添加統計標注
ax.text(0.95, 0.95,f'中位數:{stats[2]:.2f}\n平均值:{mean_val:.2f}',transform=ax.transAxes,ha='right', va='top',fontsize=12,color='black',fontweight='bold',linespacing=1.5,bbox=dict(facecolor='white', alpha=0.7, edgecolor='none'))  # 添加背景框
ax.set_yticks([])  # 清空Y軸刻度系統# 創建增強DataFrame
df = pd.DataFrame({"變量名稱": ["數據集 A"],"最小值": [stats[0]],"Q1": [stats[1]],"中位數": [stats[2]],"Q3": [stats[3]],"最大值": [stats[4]],"平均值": [mean_val]
})# 顯示圖表及數據
plt.title('箱線圖')
plt.xlabel('數值分布')
plt.tight_layout()
plt.subplots_adjust(right=0.85)  # 增加右側邊距
plt.show()# 打印 DataFrame
print(df)

畫圖四、使用Python 繪制二組數據的散點圖

1、圖像布局
使用顏色 #1E9ED9表示方案一、使用#DB472A表示方案二。方案一標記為圓形方案二為正方形。數據1為的標簽為方案一和方案二。
設置字體為漢字宋體,并解決負號顯示問。
圖標題字體為24,其他為18
圖標題為方案一和方案二對比散布圖
全局設置mpl.rcParams[‘figure.dpi’] = 1080
圖例放在右下角legend,去除外框。
在圖像的右上角要加入plt.text 方案一均值 方案二 均值
為了保障距離上邊框的距離,頂部留20%空間是ax.margins(y=0.2) ,
2、坐標軸
x軸標簽為1到30
y軸為“平均RSRP(dbm)” 從-60 到-100
3、標簽和網格線
不現實標簽。2標簽為方案一 均值:xx 使用f字符串實現,均值根據data計算
不顯示網格線
4、其他元素
在給每組數據均值的位置加一根紅虛線 案一的均值改為藍色的虛線,兩條虛線的上方都寫上均值:xx 字體顏色與標記顏色相同
方案一標記為圓形方案二為正方形

import matplotlib.pyplot as plt
import numpy as np# 全局參數設置
plt.rcParams['font.sans-serif'] = 'SimSun'
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['figure.dpi'] = 1080# 準備數據
data1 = [-92.3,-92.6,-86.6,-84.9,-89.2,-86,-87.9,-90.9,-87.9,-84.4,-89.1,-84.3,-96.9,-86.5,-88.7,-89.9,-88.7,-95,-89.7,-87.9,-84.6,-90.6,-91.4,-90.5,-86.3,-88,-90.6,-87.5,-88.7,-86.1]
data2 = [-86.8, -86.7, -86.4, -84.7, -82.1, -85.1, -82.6, -81.7, -86.2, -81.8,-83.4, -85.8, -86.8, -84.2, -84.2, -90.3, -85.8, -83, -84.2, -88, -87.1,-83, -85.2, -86, -83.1, -85, -86.3, -86.3, -85.7, -84.1
]
x = np.arange(1, 31)# 創建畫布
fig, ax = plt.subplots(figsize=(10, 6))# 計算均值
mean1 = round(np.mean(data1), 1)
mean2 = round(np.mean(data2), 1)# 繪制散點圖
ax.scatter(x, data1, c='#1E9ED9', marker='o', label='方案一')
ax.scatter(x, data2, c='#DB472A', marker='s', label='方案二')# 添加均值虛線及標注
ax.axhline(mean1, color='blue', linestyle='--', linewidth=1)
ax.axhline(mean2, color='red', linestyle='--', linewidth=1)
ax.text(15.5, mean1-3, f'均值:{mean1}', color='blue', ha='right', fontsize=12)
ax.text(15.5, mean2+3, f'均值:{mean2}', color='red', ha='right', fontsize=12)# 坐標軸設置
ax.set_xticks(x)
ax.set_ylim(-110, -70)
ax.set_ylabel('平均RSRP(dBm)', fontsize=18)
ax.yaxis.set_label_coords(-0.05, 0.5)# 圖例設置
ax.legend(loc='lower right', frameon=False, fontsize=18)# 其他格式
ax.margins(y=0.2)
plt.title('RSRP散布圖', fontsize=24)
ax.grid(False)
plt.tight_layout()
plt.show()

畫圖五、使用Python 繪制山脊圖

使用joypy庫繪山脊圖

import pandas as pd
import matplotlib.pyplot as plt
from joypy import joyplot# 用戶提供的四組數據(修正命名)
data1 = [13.9, 16.7, 18.5, 15.1, 12.1, 13.3, 12.4, 15.5, 15.9, 15, 14, 15.3, 14.6, 14.4, 16, 18.2, 16.8, 15.9, 14.4, 15.1, 16.2, 14.1, 14.2, 16, 13.1, 12.9, 15.8, 18.4, 16.5, 16.4]
data2 = [17.1, 14.4, 15.6, 16.4, 14.3, 15.5, 19.3, 17.4, 16.2, 15.3, 17.8, 11.4, 13.8, 17.5, 16.5, 16.1, 16.8, 11.7, 17.8, 18.2, 17.1, 14.1, 17.3, 17.8, 16, 14.7, 16.1, 16.2, 15.3, 13.8]
data3 = [16.5, 13.3, 15.5, 14.3, 13.4, 20.3, 16, 16, 12.5, 17.7, 15.5, 16, 15.3, 16.1, 17.1, 16.8, 20.8, 17.5, 17, 14, 16.5, 15.9, 15.9, 18.4, 14.4, 14.3, 17.4, 16.5, 15.4, 18.1]
data4 = [17, 19.7, 16.5, 18, 18.5, 17.2, 20, 18.4, 16.7, 18.2, 18.2, 16.1, 16.3, 19.6, 17, 17.4, 21.2, 18.3, 18.2, 16.5, 17.9, 13.2, 14.4, 13.9, 18.9, 16.6, 17.7, 18.7, 15.9, 16]# 轉換為長格式DataFrame
df = pd.DataFrame({"方案1": data1,"方案2": data2,"方案3": data3,"方案4": data4
}).melt(var_name="Category", value_name="Value")# 繪制山脊圖
fig, axes = joyplot(data=df,by="Category",column="Value",figsize=(8, 6),overlap=0.8,       # 控制層疊高度colormap=plt.cm.viridis,  # 顏色映射title="SINR山脊圖示例",linecolor="white"  # 曲線顏色
)plt.show()

使用Python 生成和預覽數據

生成數據 、查看數據直方圖 、查看箱線圖、生成數據和其統計寫入excel

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator# 生成數據集
np.random.seed(2023)# 模擬生成 final_data 數據(假設其為一個長度為30的數組)
final_data = np.random.normal(loc=-89.1, scale=2, size=30)  # 示例數據# 創建數據框架
df = pd.DataFrame({'測試批次': [f'第{i}次測試' for i in range(1, 31)],'平均RSRP': np.round(final_data, 1)
})# 打印統計指標
mean_value = df['平均RSRP'].mean()
std_value = df['平均RSRP'].std(ddof=1)
print(f"平均值: {mean_value:.2f} dBm")
print(f"標準差: {std_value:.2f} dBm")# 繪制直方圖
plt.figure(figsize=(10, 6))
bins = np.linspace(-100, -80, 15)  # 設置橫軸從 -100 到 -80 分桶
n, bins, patches = plt.hist(df['平均RSRP'],bins=bins,color='#1E9ED9',  # 使用顏色 #1E9ED9edgecolor='black',alpha=0.8)# 在每個 bar 的頂端顯示標簽
for i, patch in enumerate(patches):height = n[i]if height > 0:  # 只顯示非零高度的標簽plt.text(patch.get_x() + patch.get_width() / 2, height + 0.1, str(int(height)),ha='center', va='bottom', fontsize=10, fontname='SimSun')# 添加均值紅虛線
plt.axvline(x=mean_value, color='red', linestyle='--',label=f'均值: {mean_value:.2f} dBm')# 設置字體為宋體
plt.rcParams['font.sans-serif'] = ['SimSun']  # 設置全局字體為宋體
plt.rcParams['axes.unicode_minus'] = False  # 解決負號顯示問題# 設置標題和坐標軸標簽
plt.title('RSRP數據分布直方圖', fontsize=14, fontname='SimSun')
plt.xlabel('RSRP值 (dBm)', fontsize=12, fontname='SimSun')
plt.ylabel('頻數', fontsize=12, fontname='SimSun')# 設置縱軸最大刻度并留出頂部空間
ax = plt.gca()
ax.margins(y=0.2)  # 縱軸頂部留 20% 空間
ax.yaxis.set_major_locator(MaxNLocator(integer=True))  # 縱軸刻度設置為整數# 設置橫軸范圍
plt.xlim(-80, -100)  # 橫軸從 -80 到 -100,-80 在最右邊# 添加圖例和外邊框
plt.legend(loc='lower right', fontsize=10,frameon=True, edgecolor='black')  # 圖例在右上角
ax.spines['top'].set_linewidth(1.5)  # 加粗上邊框
ax.spines['bottom'].set_linewidth(1.5)  # 加粗下邊框
ax.spines['left'].set_linewidth(1.5)  # 加粗左邊框
ax.spines['right'].set_linewidth(1.5)  # 加粗右邊框# 在圖像右上角加入均值和標準差
plt.text(0.95, 0.95, f'均值: {mean_value:.2f} dBm\n標準差: {std_value:.2f} dBm',transform=ax.transAxes, fontsize=10, fontname='SimSun',verticalalignment='top', horizontalalignment='right',bbox=dict(boxstyle="round", facecolor="white", edgecolor="black"))# 調整布局
plt.tight_layout()# 顯示直方圖
plt.show()# 繪制箱線圖
plt.figure(figsize=(6, 8))  # 設置圖像大小
boxprops = dict(linewidth=1.5, color='#DB472A')  # 箱體樣式,使用顏色 #DB472A
medianprops = dict(linewidth=1.5, color='black')  # 中位數線樣式
whiskerprops = dict(linewidth=1.5, color='#DB472A')  # 觸須樣式
capprops = dict(linewidth=1.5, color='#DB472A')  # 端點樣式
flierprops = dict(marker='o',  # 異常值樣式markerfacecolor='#DB472A',markersize=5,linestyle='none',markeredgecolor='none'  # 新增邊框顏色控制)plt.boxplot(df['平均RSRP'], vert=True, patch_artist=False,  # 縱向顯示,箱體不填充boxprops=boxprops, medianprops=medianprops,whiskerprops=whiskerprops, capprops=capprops, flierprops=flierprops)# 設置標題和坐標軸標簽
plt.title('RSRP數據分布箱線圖', fontsize=14, fontname='SimSun')  # 設置標題字體為宋體
plt.ylabel('RSRP值 (dBm)', fontsize=12, fontname='SimSun')  # 設置縱軸標簽字體為宋體
plt.xticks([1], ['平均RSRP'], fontsize=10, fontname='SimSun')  # 設置橫軸刻度字體為宋體# 設置縱軸范圍
plt.ylim(-100, -80)# 添加外邊框
ax = plt.gca()
ax.spines['top'].set_linewidth(1.5)
ax.spines['bottom'].set_linewidth(1.5)
ax.spines['left'].set_linewidth(1.5)
ax.spines['right'].set_linewidth(1.5)# 調整布局
plt.tight_layout()# 顯示箱線圖
plt.show()# 寫入 Excel 并添加統計指標
path = r"D:\工作\創新\QC\科創QC\方案細化\RSRP_測試報告.xlsx"
with pd.ExcelWriter(path) as writer:df.to_excel(writer, index=False, sheet_name='測量數據')stats = pd.DataFrame({'Max': [df['平均RSRP'].max()],'Min': [df['平均RSRP'].min()],'極差R': [df['平均RSRP'].max() - df['平均RSRP'].min()],'平均值X': [df['平均RSRP'].mean()],'標準差S': [df['平均RSRP'].std(ddof=1)]}, index=['統計值'])stats.to_excel(writer, sheet_name='測量數據',startrow=len(df) + 2, startcol=0, header=True)  # 將統計值寫在數據下方

數據檢驗

T 檢驗

import numpy as np
from scipy import statsdata1 = [-88.8, -93.1, -86.9, -89.5, -84.6, -88.4, -91.1, -89.5, -89.2, -91.1, -88.9, -89.6, -89.6, -89.3, -91, -88, -91.9, -87.7, -85.4, -88.4, -86, -90.3, -90.6, -85.9, -86.3, -90.1, -92.1, -88.6, -90, -92.3]
data2 = [-82.1, -85.2, -82.1, -87.6, -82.5, -86.7, -84, -84.1, -84.7, -83.3, -86.6, -87.2, -79.7, -84.8, -85.2, -81.4, -83.6, -84.3, -85.7, -87.7, -86.3, -86.2, -87.7, -84.2, -86.9, -84.2, -85.4, -85.7, -87.1, -82.9]# 方差齊性檢驗
levene_test = stats.levene(data1, data2)
print("Levene檢驗結果:統計量=%.4f, p值=%.4f" % (levene_test.statistic, levene_test.pvalue))# 根據方差齊性結果選擇equal_var參數
if levene_test.pvalue > 0.05:equal_var = True
else:equal_var = False# 進行獨立樣本T檢驗
t_stat, p_value = stats.ttest_ind(data1, data2, equal_var=equal_var)
print("\n獨立樣本T檢驗結果:")
print("t統計量 =", t_stat)
print("p值 =", p_value)# 計算自由度(如果是Welch檢驗)
if not equal_var:n1 = len(data1)n2 = len(data2)var1 = np.var(data1, ddof=1)var2 = np.var(data2, ddof=1)df = (var1/n1 + var2/n2) **2 / ((var1/n1)** 2/(n1-1) + (var2/n2)**2/(n2-1))print("自由度 =", df)
else:df = len(data1) + len(data2) - 2print("自由度 =", df)def cohen_d(data1, data2):n1, n2 = len(data1), len(data2)var1 = np.var(data1, ddof=1)  # 無偏估計var2 = np.var(data2, ddof=1)pooled_std = np.sqrt( ((n1-1)*var1 + (n2-1)*var2) / (n1+n2-2) )return abs( (np.mean(data1)-np.mean(data2)) / pooled_std )# 使用數據計算
d = cohen_d(data1, data2)
print(f"Cohen's d = {d:.2f}")  # 輸出:Cohen's d = 2.15

ANova
對四個數據做ANOVA 分為四步 :正態性判斷能不能用,方差齊性判斷用哪種、ANOVA看明顯不明顯、事后檢驗看哪兩組最明顯。


import numpy as np
from scipy import stats
from statsmodels.stats.multicomp import pairwise_tukeyhsd# 用戶數據
data1 = [17.1,14.4,15.6,16.4,14.3,15.5,19.3,17.4,16.2,15.3,17.8,11.4,13.8,17.5,16.5,16.1,16.8,11.7,17.8,18.2,17.1,14.1,17.3,17.8,16,14.7,16.1,16.2,15.3,13.8]
data2 = [13.9,16.7,18.5,15.1,12.1,13.3,12.4,15.5,15.9,15,14,15.3,14.6,14.4,16,18.2,16.8,15.9,14.4,15.1,16.2,14.1,14.2,16,13.1,12.9,15.8,18.4,16.5,16.4]
data3 = [13.4,17.9,19.2,15.1,16.3,16.1,13.7,17.3,14.9,13.1,14.8,15.8,14.8,11.7,16.2,13.2,17.5,16.6,17.2,14.8,15.9,15.7,16.5,15.2,16.8,13.5,15.1,14.4,13.3,14.3]
data4 = Data4 = [17, 19.7, 16.5, 18, 18.5, 17.2, 20, 18.4, 16.7, 18.2, 18.2, 16.1, 16.3, 19.6, 17, 17.4, 21.2, 18.3, 18.2, 16.5, 17.9, 13.2, 14.4, 13.9, 18.9, 16.6, 17.7, 18.7, 15.9, 16]# 正態性檢驗(Shapiro-Wilk)
for i, data in enumerate([data1, data2, data3, data4], 1):stat, p = stats.shapiro(data)print(f"Data{i}正態性檢驗: W={stat:.3f}, p={p:.3f}")# 方差齊性檢驗(Levene)
levene_stat, levene_p = stats.levene(data1, data2, data3, data4)
print(f"\nLevene方差齊性檢驗:F={levene_stat:.2f}, p={levene_p:.4f}")# 單因素ANOVA
f_stat, p_value = stats.f_oneway(data1, data2, data3, data4)
print(f"\n單因素ANOVA結果:F({3},{116})={f_stat:.2f}, p={p_value:.4f}")# 效應量計算(Eta squared)
total = np.concatenate([data1, data2, data3, data4])
ss_total = np.var(total, ddof=1) * (len(total)-1)
eta_sq = (f_stat * 3) / (f_stat * 3 + 116)  # 公式:η2 = (F * df_between) / (F * df_between + df_within)
print(f"效應量η2 = {eta_sq:.3f}")# 事后檢驗(Tukey HSD)
tukey = pairwise_tukeyhsd(endog=np.concatenate([data1, data2, data3, data4]),groups=np.array(['Data1']*30 + ['Data2']*30 + ['Data3']*30 + ['Data4']*30),alpha=0.05
)
print("\nTukey HSD事后檢驗結果:")
print(tukey.summary())

二、動態圖表

使用有代碼開源動態圖表網站,尋找合適的模板,將圖表和對應的代碼輸入大模型,然后提出修改意見和生成代碼。
按優先順序推薦如下
1、apache echarts的示例
圖表好看、類型齊全、提供代碼
https://echarts.apache.org/examples/zh/index.html#chart-type-line
2、pyercharts的基礎圖表
圖表一般、類型齊全、提供代碼
https://05x-docs.pyecharts.org/#/zh-cn/charts_base
3、鏑數圖標
圖表好看、類型齊全、不提供代碼,僅能參考
https://dycharts.com/appv2/#/pages/home/chart-template

三、畫圖的美化

給大模型提供美化庫,讓他使用特定的美化庫的美化模板進行繪圖。

1、Matplotx

主要用在深色主題的繪圖中,特別是用在黑色或者藍色的科技感演講PPT中。
主題如下,其中Dracula主題非常流行。
在這里插入圖片描述

2、案例圖形

1、陰影雷達圖
在這里插入圖片描述

3、其他工具

數據專列表

def convert_to_list(input_data):"""將一列數字轉換為 Python 列表。參數:input_data (str): 包含一列數字的字符串,每行一個數字。返回:list: 轉換后的 Python 列表。"""# 按行分割輸入數據lines = input_data.strip().splitlines()# 將每一行的數字轉換為浮點數或整數data_list = []for line in lines:stripped_line = line.strip()if "." in stripped_line:  # 判斷是否為浮點數data_list.append(float(stripped_line))else:data_list.append(int(stripped_line))return data_list# 示例輸入數據
input_data = """
17"""# 調用函數并打印結果
data_list = convert_to_list(input_data)
print(data_list)

字體設置

https://blog.csdn.net/qq_35240689/article/details/130924160

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

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

相關文章

【JavaEE】MyBatis - Plus

目錄 一、快速使用二、CRUD簡單使用三、常見注解3.1 TableName3.2 TableFiled3.3 TableId 四、條件構造器4.1 QueryWrapper4.2 UpdateWrapper4.3 LambdaQueryWrapper4.4 LambdaUpdateWrapper 五、自定義SQL 一、快速使用 MyBatis Plus官方文檔:MyBatis Plus官方文檔…

采用前端技術開源了一個數據結構算法的可視化工具

今天要推薦的開源項目叫VisuAlgoX,是一個面向計算機科學和游戲開發的 交互式算法可視化工具,幫助用戶通過直觀的動畫理解各種數據結構和算法。 項目的前身 由于最近在做一些關于游戲和圖形化方面的文章,因此做了一部分相關算法的動態可視化來做配圖展示…

體驗智譜清言的AutoGLM進行自動化的操作(Chrome插件)

最近體驗了很多的大模型,大模型我是一直關注著ChatGLM,因為它確實在7b和8b這檔模型里,非常聰明! 最近還體驗了很多大模型的應用軟件,比如Agently、5ire、 mcphost、 Dive、 NextChat等。但是這些一般都是圖形界面或者…

pytorch中dataloader自定義數據集

前言 在深度學習中我們需要使用自己的數據集做訓練,因此需要將自定義的數據和標簽加載到pytorch里面的dataloader里,也就是自實現一個dataloader。 數據集處理 以花卉識別項目為例,我們分別做出圖片的訓練集和測試集,訓練集的標…

Blender模型導入虛幻引擎設置

單位系統不一致 Blender默認單位是米(Meters),而虛幻引擎默認使用**厘米(Centimeters)**作為單位。 當模型從Blender導出為FBX或其他格式時,如果沒有調整單位,虛幻引擎會將1米(Blen…

Docker基礎詳解

Docker 技術詳解 一、概述 Docker官網:https://docs.docker.com/ 菜鳥教程:https://www.runoob.com/docker/docker-tutorial.html 1.1 什么是Docker? Docker 是一個開源的容器化平臺,它允許開發者將應用程序和其依賴項打包到…

FastPillars:一種易于部署的基于支柱的 3D 探測器

FastPillars:一種易于部署的基于支柱的 3D 探測器Report issue for preceding element Sifan Zhou 1 , Zhi Tian 2 , Xiangxiang Chu 2 , Xinyu Zhang 2 , Bo Zhang 2 , Xiaobo Lu11{}^{1}start_FLOATSUPERSCRIPT 1 end_FLOATSUPERSCRIPT11footnotemark: 1 Chengji…

NLP語言模型訓練里的特殊向量

1. CLS 向量和 DEC 向量的區別及訓練方式 (1) CLS 向量與 DEC 向量是否都是特殊 token? CLS 向量([CLS] token)和 DEC 向量(Decoder Input token)都是特殊的 token,但它們出現在不同類型的 NLP 模型中&am…

字節跳動 UI-TARS 匯總整理報告

1. 摘要 UI-TARS 是字節跳動開發的一種原生圖形用戶界面(GUI)代理模型 。它將感知、行動、推理和記憶整合到一個統一的視覺語言模型(VLM)中 。UI-TARS 旨在跨桌面、移動和 Web 平臺實現與 GUI 的無縫交互 。實驗結果表明&#xf…

基于Python深度學習的鯊魚識別分類系統

摘要:鯊魚是海洋環境健康的指標,但受到過度捕撈和數據缺乏的挑戰。傳統的觀察方法成本高昂且難以收集數據,特別是對于具有較大活動范圍的物種。論文討論了如何利用基于媒體的遠程監測方法,結合機器學習和自動化技術,來…

【漫話機器學習系列】168.最大最小值縮放(Min-Max Scaling)

在機器學習和數據預處理中,特征縮放(Feature Scaling) 是一個至關重要的步驟,它可以使模型更穩定,提高訓練速度,并優化收斂效果。最大最小值縮放(Min-Max Scaling) 是其中最常見的方…

開源測試用例管理平臺

不可錯過的10個開源測試用例管理平臺: PingCode、TestLink、Kiwi TCMS、Squash TM、FitNesse、Tuleap、Robot Framework、SpecFlow、TestMaster、Nitrate。 開源測試用例管理工具提供了一種透明、靈活的解決方案,使團隊能夠在不受限的情況下適應具體的測…

鴻蒙闊折疊Pura X外屏開發適配

首先看下鴻蒙中斷點分類 內外屏開合規則 Pura X開合連續規則: 外屏切換到內屏,界面可以直接接續。內屏(鎖屏或非鎖屏狀態)切換到外屏,默認都顯示為鎖屏的亮屏狀態。用戶解鎖后:對于應用已適配外屏的情況下,應用界面可以接續到外屏。折疊外屏顯示展開內屏顯示折疊狀態…

DRM_CLIENT_CAP_UNIVERSAL_PLANES和DRM_CLIENT_CAP_ATOMIC

drmSetClientCap(fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1); drmSetClientCap(fd, DRM_CLIENT_CAP_ATOMIC, 1); 這兩行代碼用于啟用 Linux DRM(Direct Rendering Manager)客戶端的兩個關鍵特性,具體作用如下: 1. drmSetClientCap…

敏捷開發10:精益軟件開發和看板kanban開發方法的區別是什么

簡介 精益生產起源于豐田生產系統,核心是消除浪費,而看板最初是由豐田用于物料管理的信號卡片,后來被引入軟件開發。 Kanban 后來引入到敏捷開發中,強調持續交付和流程可視化。 精益軟件開發原則是基于精益生產的原則&#xff0…

用matlab探索卷積神經網絡(Convolutional Neural Networks)-3

5.GoogLeNet中的Filters 這里我們探索GoogLeNet中的Filters,首先你需要安裝GoogLeNet.在Matlab的APPS里找到Deep Network Designer,然后找到GoogLeNet,安裝后的網絡是沒有右下角的黃色感嘆號的,沒有安裝的神經網絡都有黃色感嘆號。 一個層&a…

Verilog中X態的危險:仿真漏掉的bug

由于Verilog中X態的微妙語義,RTL仿真可能PASS,而網表仿真卻會fail。 目前進行的網表仿真越來越少,這個問題尤其嚴重,主要是網表仿真比RTL仿真慢得多,因此對整個回歸測試而言成本效益不高。 上面的例子中,用Verilog RTL中的case語句描述了一個簡單的AND函數,它被綜合成AN…

PyTorch中知識蒸餾淺講

知識蒸餾 在 PyTorch 中,使用 teacher_model.eval() 和凍結教師模型參數是知識蒸餾(Knowledge Distillation)中的關鍵步驟。 ?1. teacher_model.eval() 的作用 目的: 將教師模型切換到評估模式,影響某些特定層(如 Dropout、BatchNorm)的行為。 ?具體影響: ?Dropo…

Odoo/OpenERP 和 psql 命令行的快速參考總結

Odoo/OpenERP 和 psql 命令行的快速參考總結 psql 命令行選項 選項意義-a從腳本中響應所有輸入-A取消表數據輸出的對齊模式-c <查詢>僅運行一個簡單的查詢&#xff0c;然后退出-d <數據庫名>指定連接的數據庫名&#xff08;默認為當前登錄用戶名&#xff09;-e回顯…

ChatGPT 迎來 4o模型:更強大的圖像生成能力與潛在風險

OpenAI 對 ChatGPT 進行重大升級&#xff0c;圖像生成功能即將迎來新的 4o 模型&#xff0c;并取代原本的 DALLE。此次更新不僅提升了圖像生成質量&#xff0c;還增強了對話內容和上傳文件的融合能力&#xff0c;使 AI 生成的圖像更加智能化和精準化。 4o 模型帶來的革新 Ope…