亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2025年04月03日 10:17:21   作者:風暴之零  
Python使用matplotlib進行可視化一直有2個問題,一是代碼繁瑣,二是默認模板比較丑,在大模型時代,這個問題有了另一種解法,下面我們就來看看如何使用大語言模型進行圖表可視化吧

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

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

使用大模型生成想要的代碼需要精準的提示詞描述,否則大模型會根據(jù)自己的理解畫圖。為了讓大模型能夠精準的理解我們的意圖,我把畫圖的設置進行了整理。同時把大模型生成的代碼中的最佳實踐列出來,便于大模型按照最佳的方法輸出代碼,避免大模型自創(chuàng)錯誤的方法。

需要畫圖時更改要求并把代碼作為案例一并提交大模型生成代碼。下面的需求是給大模型的輸入所以,為了讓大模型輸出更精準,所以把關鍵把代碼和自然語言混編。

本文主要解決三個問題

1、給出一個各類圖標的基礎設置提示詞模板,保證大模型能一次性按需生成需要的模型,避免反復與大模型多輪對話。

2、給出代碼的最佳實踐和指定易錯的API,避免大模型生成錯誤代碼

3、各類圖表的使用場景和樣式。

畫圖一:使用Python 繪制柱圖

使用Python畫柱圖,數(shù)據(jù)如下,其中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()函數(shù)讓最右邊的bar距離右邊框和最左邊的bar 距離左邊框距離一致ax.margins(x=margin ) # 頂部留20%空間

核心布局參數(shù)系統(tǒng)

bar_width = 0.28 # 柱體寬度
bar_spacing = 0.12 # 柱間間距
margin = 0.12 # 新增邊界控制參數(shù) (建議范圍0-0.3)

11、圖標題為主覆蓋站點選擇

12、整個圖像要加粗線的外邊框

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

# 全局參數(shù)配置
mpl.rcParams['figure.dpi'] = 1080  # 設置分辨率
plt.rcParams['font.sans-serif'] = ['SimSun']  # 設置宋體
plt.rcParams['axes.unicode_minus'] = False   # 顯示負號

# 核心數(shù)據(jù)與參數(shù)
data = [-89.68, -84.27]
labels = ['方案一', '方案二']
bar_color = '#1E9ED9'

# 布局控制系統(tǒng)
bar_width = 0.12      # 柱體寬度
bar_spacing = 0.28    # 柱間間距
margin = 0.24         # 邊界對稱控制參數(shù)

# 創(chuàng)建畫布與坐標系
fig, ax = plt.subplots(figsize=(10, 7))

# 橫坐標定位引擎
x_base = np.arange(len(labels))  # 基準定位點 [0, 1]
x_pos = x_base * (bar_width + bar_spacing)  # 精確柱體定位

# 繪制柱狀圖系統(tǒng)
bars = ax.bar(x_pos, data,
             width=bar_width,
             color=bar_color,
             edgecolor='none')  # 無邊框設置

# 數(shù)據(jù)標簽渲染器
ax.bar_label(bars,
            labels=[f'{v:.2f}' for v in data],
            label_type='edge',  # 將標簽放置在柱子頂端
            padding=5,          # 調整標簽與柱子頂端的距離
            fontsize=18,
            color='black')

# 坐標軸配置系統(tǒng)
ax.set_xticks(x_pos)
ax.set_xticklabels(labels, fontsize=18)
ax.set_ylabel('平均RSRP(dBm)', fontsize=18)
#ax.set_title('主覆蓋站點選擇', fontsize=24)

# 縱軸顯示優(yōu)化
ax.set_ylim(0, max(data) * 1.2)  # 強制從0開始
ax.invert_yaxis()  # 數(shù)值倒置顯示
ax.margins(y=0.2)  # 頂部留20%空間

# 邊界對稱控制系統(tǒng)
ax.margins(x=margin)  # 左右對稱留白

# 邊框強化模塊
for spine in ax.spines.values():
    spine.set_linewidth(2.5)  # 邊框加粗

# 生成最終圖像
plt.show()

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

使用Python 繪制頻數(shù)分布直方圖:

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、標簽和網(wǎng)格線

  • 將標簽放在柱子頂端,只顯示非0標簽。
  • 相鄰等高的柱子,標簽要錯開(可以去掉,bar等高標簽防止重疊 from adjustText import adjust_text)
  • 不顯示網(wǎng)格線

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  # 解決負號顯示問題

# 數(shù)據(jù)列表
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',  # 使用顏色 #1E9ED9
                            edgecolor='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數(shù)據(jù)分布直方圖', fontsize=20)
plt.xlabel('RSRP值 (dBm)', fontsize=16)
plt.ylabel('頻數(shù)', fontsize=16)

# 設置縱軸最大刻度并留出頂部空間
ax = plt.gca()
ax.margins(y=0.2)  # 縱軸頂部留 20% 空間
ax.yaxis.set_major_locator(MaxNLocator(integer=True))  # 縱軸刻度設置為整數(shù)

# 設置橫軸范圍
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軸刻度系統(tǒng)ax.set_yticks([])

7、箱線圖橫放

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 全局參數(shù)設置
plt.rcParams['font.sans-serif'] = ['Arial']  # 替換為 Arial 字體
plt.rcParams['axes.unicode_minus'] = False

# 數(shù)據(jù)集
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
]

# 創(chuàng)建畫布
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'})

# 計算統(tǒng)計量
mean_val = np.mean(data)
stats = [np.min(data), np.percentile(data, 25), np.median(
    data), np.percentile(data, 75), np.max(data)]

# 添加統(tǒng)計標注
ax.text(0.95, 0.95,
        f'中位數(shù):{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軸刻度系統(tǒng)

# 創(chuàng)建增強DataFrame
df = pd.DataFrame({
    "變量名稱": ["數(shù)據(jù)集 A"],
    "最小值": [stats[0]],
    "Q1": [stats[1]],
    "中位數(shù)": [stats[2]],
    "Q3": [stats[3]],
    "最大值": [stats[4]],
    "平均值": [mean_val]
})

# 顯示圖表及數(shù)據(jù)
plt.title('箱線圖')
plt.xlabel('數(shù)值分布')
plt.tight_layout()
plt.subplots_adjust(right=0.85)  # 增加右側邊距
plt.show()

# 打印 DataFrame
print(df)

畫圖四、使用Python 繪制二組數(shù)據(jù)的散點圖

1、圖像布局

  • 使用顏色 #1E9ED9表示方案一、使用#DB472A表示方案二。方案一標記為圓形方案二為正方形。數(shù)據(jù)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、標簽和網(wǎng)格線

  • 不現(xiàn)實標簽。2標簽為方案一 均值:xx 使用f字符串實現(xiàn),均值根據(jù)data計算
  • 不顯示網(wǎng)格線

4、其他元素

  • 在給每組數(shù)據(jù)均值的位置加一根紅虛線 案一的均值改為藍色的虛線,兩條虛線的上方都寫上均值:xx 字體顏色與標記顏色相同
  • 方案一標記為圓形方案二為正方形
import matplotlib.pyplot as plt
import numpy as np

# 全局參數(shù)設置
plt.rcParams['font.sans-serif'] = 'SimSun'
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['figure.dpi'] = 1080

# 準備數(shù)據(jù)
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)

# 創(chuàng)建畫布
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

# 用戶提供的四組數(shù)據(jù)(修正命名)
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 生成和預覽數(shù)據(jù)

生成數(shù)據(jù) 、查看數(shù)據(jù)直方圖 、查看箱線圖、生成數(shù)據(jù)和其統(tǒng)計寫入excel

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator

# 生成數(shù)據(jù)集
np.random.seed(2023)

# 模擬生成 final_data 數(shù)據(jù)(假設其為一個長度為30的數(shù)組)
final_data = np.random.normal(loc=-89.1, scale=2, size=30)  # 示例數(shù)據(jù)

# 創(chuàng)建數(shù)據(jù)框架
df = pd.DataFrame({
    '測試批次': [f'第{i}次測試' for i in range(1, 31)],
    '平均RSRP': np.round(final_data, 1)
})

# 打印統(tǒng)計指標
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',  # 使用顏色 #1E9ED9
                            edgecolor='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數(shù)據(jù)分布直方圖', fontsize=14, fontname='SimSun')
plt.xlabel('RSRP值 (dBm)', fontsize=12, fontname='SimSun')
plt.ylabel('頻數(shù)', fontsize=12, fontname='SimSun')

# 設置縱軸最大刻度并留出頂部空間
ax = plt.gca()
ax.margins(y=0.2)  # 縱軸頂部留 20% 空間
ax.yaxis.set_major_locator(MaxNLocator(integer=True))  # 縱軸刻度設置為整數(shù)

# 設置橫軸范圍
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')  # 中位數(shù)線樣式
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數(shù)據(jù)分布箱線圖', 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 并添加統(tǒng)計指標
path = r"D:\工作\創(chuàng)新\QC\科創(chuàng)QC\方案細化\RSRP_測試報告.xlsx"
with pd.ExcelWriter(path) as writer:
    df.to_excel(writer, index=False, sheet_name='測量數(shù)據(jù)')

    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=['統(tǒng)計值'])

    stats.to_excel(writer, sheet_name='測量數(shù)據(jù)',
                   startrow=len(df) + 2, startcol=0, header=True)  # 將統(tǒng)計值寫在數(shù)據(jù)下方

數(shù)據(jù)檢驗

T 檢驗

import numpy as np
from scipy import stats

data1 = [-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檢驗結果:統(tǒng)計量=%.4f, p值=%.4f" % (levene_test.statistic, levene_test.pvalue))

# 根據(jù)方差齊性結果選擇equal_var參數(shù)
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ǒng)計量 =", 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) - 2
    print("自由度 =", 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 )

# 使用數(shù)據(jù)計算
d = cohen_d(data1, data2)
print(f"Cohen's d = {d:.2f}")  # 輸出:Cohen's d = 2.15

ANova

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

import numpy as np
from scipy import stats
from statsmodels.stats.multicomp import pairwise_tukeyhsd

# 用戶數(shù)據(jù)
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]

# 正態(tài)性檢驗(Shapiro-Wilk)
for i, data in enumerate([data1, data2, data3, data4], 1):
    stat, p = stats.shapiro(data)
    print(f"Data{i}正態(tà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())

二、動態(tài)圖表

使用有代碼開源動態(tài)圖表網(wǎng)站,尋找合適的模板,將圖表和對應的代碼輸入大模型,然后提出修改意見和生成代碼。

按優(yōu)先順序推薦如下

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、鏑數(shù)圖標

圖表好看、類型齊全、不提供代碼,僅能參考 https://dycharts.com/appv2/#/pages/home/chart-template

三、畫圖的美化

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

1、Matplotx

主要用在深色主題的繪圖中,特別是用在黑色或者藍色的科技感演講PPT中。

主題如下,其中Dracula主題非常流行。

2、案例圖形

1、陰影雷達圖

3、其他工具

數(shù)據(jù)專列表

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


# 示例輸入數(shù)據(jù)
input_data = """
17

"""

# 調用函數(shù)并打印結果
data_list = convert_to_list(input_data)
print(data_list)

以上就是Python使用大語言模型進行圖表可視化的詳細內容,更多關于Python大模型圖表可視化的資料請關注腳本之家其它相關文章!

相關文章

  • 如何在python?中導入?package

    如何在python?中導入?package

    這篇文章主要介紹了?如何在python中導入,package,package?在python中是一種有效組織代碼,module可以是一個文件,可以通過import來導入一個module?單個文件,而,package,則是作為一個目錄來導入,下文操作流程需要的朋友可以參考一下
    2022-04-04
  • Python OpenCV實戰(zhàn)之與機器學習的碰撞

    Python OpenCV實戰(zhàn)之與機器學習的碰撞

    機器學習是人工智能的子集,為計算機以及其它具有計算能力的系統(tǒng)提供自動預測或決策的能力。本文主要介紹了OpenCV 提供的常見機器學習算法和技術,用于解決計算機視覺項目中的實際問題,需要的朋友可以參考一下
    2021-12-12
  • python GUI庫圖形界面開發(fā)之PyQt5菜單欄控件QMenuBar的詳細使用方法與實例

    python GUI庫圖形界面開發(fā)之PyQt5菜單欄控件QMenuBar的詳細使用方法與實例

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5菜單欄控件QMenuBar的詳細使用方法與實例,需要的朋友可以參考下
    2020-02-02
  • python批處理將圖片進行放大實例代碼

    python批處理將圖片進行放大實例代碼

    最近處理一些規(guī)格不一的照片,需要修改成指定尺寸便于打印,下面這篇文章主要給大家介紹了關于python批處理將圖片進行放大的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • Pandas讀取并修改excel的示例代碼

    Pandas讀取并修改excel的示例代碼

    這篇文章主要介紹了Pandas讀取并修改excel的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-02-02
  • Keras中的兩種模型:Sequential和Model用法

    Keras中的兩種模型:Sequential和Model用法

    這篇文章主要介紹了Keras中的兩種模型:Sequential和Model用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python使用for實現(xiàn)無限循環(huán)的多種方式匯總

    Python使用for實現(xiàn)無限循環(huán)的多種方式匯總

    這篇文章主要介紹了Python使用for實現(xiàn)無限循環(huán)的多種方式匯總,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • PyQt5多線程刷新界面防假死示例

    PyQt5多線程刷新界面防假死示例

    今天小編就為大家分享一篇PyQt5多線程刷新界面防假死示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 基于Django OneToOneField和ForeignKey的區(qū)別詳解

    基于Django OneToOneField和ForeignKey的區(qū)別詳解

    這篇文章主要介紹了基于Django OneToOneField和ForeignKey的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python?數(shù)據(jù)篩選功能實現(xiàn)

    Python?數(shù)據(jù)篩選功能實現(xiàn)

    這篇文章主要介紹了Python?數(shù)據(jù)篩選,無論是在數(shù)據(jù)分析還是數(shù)據(jù)挖掘的時候,數(shù)據(jù)篩選總會涉及到,這里我總結了一下python中列表,字典,數(shù)據(jù)框中一些常用的數(shù)據(jù)篩選的方法,需要的朋友可以參考下
    2023-04-04

最新評論