国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一)

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

寫在前面

最近開始更新一個(gè)新的系列科研繪圖,在同一個(gè)競(jìng)賽下,大家都近乎相同的解題思路下。之所以能出現(xiàn)一等二等三等獎(jiǎng)的區(qū)別很大部分都在于結(jié)果的可視化,為了能更好地幫助大家進(jìn)行可視化,近期將專門推出一個(gè)可視化板塊,推出各種好看實(shí)用的可視化圖形。

山脊圖

也稱為Joy Plot。它是一種數(shù)據(jù)可視化的方法,用于展示一個(gè)或多個(gè)組的數(shù)據(jù)分布。在山脊圖中,每個(gè)組的數(shù)據(jù)分布通過(guò)平滑的密度曲線表示,這些曲線沿垂直軸堆疊排列,從而產(chǎn)生類似山脊的視覺(jué)效果。這種圖表尤其適用于比較不同組的數(shù)據(jù)分布情況。

山脊圖的制作基于核密度估計(jì)(Kernel Density Estimation, KDE),這是一種估計(jì)概率密度函數(shù)的非參數(shù)方式。與傳統(tǒng)的條形圖或直方圖相比,山脊圖提供了一種更平滑、更直觀的方式來(lái)展示數(shù)據(jù)的分布情況。它特別適合于展示大量組的數(shù)據(jù)分布,可以幫助觀察者理解不同組之間的差異和相似之處。

山脊圖(Ridge Plot)是一種數(shù)據(jù)可視化工具,主要用于比較多個(gè)分布。

優(yōu)點(diǎn)

  1. 比較能力:非常適合比較多個(gè)分布的形狀和大小。它能清晰地展示不同組之間的變化和趨勢(shì)。
  2. 空間效率:通過(guò)在單個(gè)圖中堆疊,山脊圖可以有效地利用空間,顯示多組數(shù)據(jù),避免了創(chuàng)建多個(gè)單獨(dú)的密度圖。
  3. 美觀性:山脊圖在視覺(jué)上吸引人,可以用不同的顏色和樣式來(lái)區(qū)分不同的組,使得數(shù)據(jù)更加生動(dòng)和直觀。
  4. 趨勢(shì)識(shí)別:可以輕松識(shí)別多個(gè)群體數(shù)據(jù)中的共同模式和異常值。
  5. 數(shù)據(jù)量:適用于展示大量數(shù)據(jù)集,而不會(huì)顯得擁擠或不清晰。

缺點(diǎn)

  1. 過(guò)度擁擠:如果組的數(shù)量過(guò)多,山脊圖可能會(huì)顯得擁擠,使得個(gè)別分布難以辨認(rèn)。
  2. 精確度:由于重疊,難以精確讀取特定點(diǎn)的值,尤其是在分布之間的重疊區(qū)域。
  3. 數(shù)值比較:雖然能夠展示分布趨勢(shì),但不適合精確比較不同組之間的數(shù)值。
  4. 邊緣效應(yīng):在堆疊的密度圖中,可能會(huì)產(chǎn)生誤導(dǎo),例如,邊緣的分布可能看起來(lái)比實(shí)際更少。

實(shí)現(xiàn)

本次更新主要以matlab為主,python實(shí)現(xiàn)代碼也放于文末展示

matlab

首先是,繪制最初始的,最簡(jiǎn)單的山脊圖,如下所示
【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

% 清空環(huán)境變量和窗口
clear; close all;

% 生成模擬數(shù)據(jù)
data = [];
groups = 6;
for i = 1:groups
data = [data; normrnd(i, 0.5, [200, 1])];
end

% 為每組數(shù)據(jù)創(chuàng)建一個(gè)標(biāo)簽
group = repelem(1:groups, 200)';

% 創(chuàng)建一個(gè)圖形窗口
figure;

% 對(duì)每組數(shù)據(jù)進(jìn)行繪制
for i = 1:groups
% 選擇當(dāng)前組的數(shù)據(jù)
subset = data(group == i);
% 計(jì)算核密度估計(jì)
[f, xi] = ksdensity(subset);
% 繪制密度曲線,并上移相應(yīng)的高度以創(chuàng)建堆疊效果
plot(xi, f + i, 'LineWidth', 2);
hold on;
end

% 添加圖例和坐標(biāo)軸標(biāo)簽
legend('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5', 'Group 6');
xlabel('Value');
ylabel('Density');
title('Ridge Plot Example');

% 顯示圖形
hold off;

為了進(jìn)一步美化圖形,添加一些元素和調(diào)整一些參數(shù)來(lái)增強(qiáng)其視覺(jué)效果。

【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

% 清空環(huán)境變量和窗口
clear; close all;

% 生成模擬數(shù)據(jù)
data = [];
groups = 6;
colors = jet(groups); % 使用彩虹色系
for i = 1:groups
data = [data; normrnd(i, 0.5, [200, 1])];
end

% 為每組數(shù)據(jù)創(chuàng)建一個(gè)標(biāo)簽
group = repelem(1:groups, 200)';

% 創(chuàng)建一個(gè)圖形窗口
figure;

% 對(duì)每組數(shù)據(jù)進(jìn)行繪制
for i = 1:groups
% 選擇當(dāng)前組的數(shù)據(jù)
subset = data(group == i);
% 計(jì)算核密度估計(jì)
[f, xi] = ksdensity(subset);
% 繪制密度曲線,并上移相應(yīng)的高度以創(chuàng)建堆疊效果
plot(xi, f + i, 'LineWidth', 2, 'Color', colors(i, :));
hold on;
end

% 添加圖例和坐標(biāo)軸標(biāo)簽
legend('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5', 'Group 6', ...
'Location', 'northeastoutside');
xlabel('Value');
ylabel('Density');
title('Enhanced Ridge Plot Example');

% 設(shè)置坐標(biāo)軸界限和網(wǎng)格
xlim([min(data), max(data)]);
ylim([1, groups + 1]);
grid on;

% 設(shè)置字體大小
set(gca, 'FontSize', 10);

% 顯示圖形
hold off;

下面兩個(gè)是matalb美化后的版本
【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python
【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

python

【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde

# 如果您想嘗試使用默認(rèn)樣式,可以注釋掉下面這行代碼
# plt.style.use('seaborn')

# 生成模擬數(shù)據(jù)
groups = 6
data = pd.DataFrame({f'Group_{i}': np.random.normal(loc=i, scale=0.5, size=200) for i in range(1, groups + 1)})

# 轉(zhuǎn)換為“長(zhǎng)格式”
data_long = pd.melt(data, var_name='Group', value_name='Value')

# 初始化圖形
fig, ax = plt.subplots(figsize=(10, 6))

# 對(duì)每組數(shù)據(jù)進(jìn)行繪制
for i, group in enumerate(data.columns):
    # 選擇當(dāng)前組的數(shù)據(jù)
    subset = data[group]

    # 計(jì)算核密度估計(jì)
    density = gaussian_kde(subset)
    xs = np.linspace(subset.min(), subset.max(), 200)
    ys = density(xs)

    # 繪制密度曲線,并上移相應(yīng)的高度以創(chuàng)建堆疊效果
    ax.plot(xs, ys + i, lw=2)

# 添加圖例和坐標(biāo)軸標(biāo)簽
ax.legend([f'Group {i + 1}' for i in range(groups)])
ax.set_xlabel('Value')
ax.set_ylabel('Density')
ax.set_title('Ridge Plot Example')

# 顯示圖形
plt.show()

【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

氣泡矩陣圖

氣泡矩陣圖(Bubble Matrix Plot),通常用于顯示三個(gè)變量之間的關(guān)系。這種圖表類型將數(shù)據(jù)點(diǎn)表示為氣泡的形式,其中氣泡的大小通常表示第三個(gè)數(shù)值變量的大小。圖表的X軸和Y軸代表兩個(gè)分類或定量變量。顏色可能代表另一個(gè)分類變量或是另一個(gè)連續(xù)變量的梯度,這里顏色的深淺對(duì)應(yīng)于顏色條(Color Bar)上的值。
【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

實(shí)現(xiàn)

matlab

【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

% MATLAB code to create an aesthetic bubble matrix plot

% Generate some example data
x_categories = 1:10;
y_categories = 1:10;
[X, Y] = meshgrid(x_categories, y_categories);
bubbleSizes = reshape(rand(size(X)), [], 1) * 100; % Random bubble sizes
colors = reshape(rand(size(X)), [], 1); % Random colors for the bubbles

% Create the figure
figure;

% Create the bubble plot using scatter
scatter(X(:), Y(:), bubbleSizes, colors, 'filled');

% Improve aesthetics
colormap('jet'); % Use the 'jet' colormap for color coding the bubbles
colorbar; % Show a color bar
title('Aesthetic Bubble Matrix Plot');
xlabel('XAxis');
ylabel('YAxis');

% Change the axis to show the category names
xticks(x_categories);
xticklabels(arrayfun(@num2str, x_categories, 'UniformOutput', false));
yticks(y_categories);
yticklabels(arrayfun(@num2str, y_categories, 'UniformOutput', false));

% Add a grid
grid on;
set(gca, 'GridLineStyle', '--', 'GridColor', [0.5, 0.5, 0.5], 'GridAlpha', 0.7); % Use a gray color for the grid

% There is no tight_layout in MATLAB, but you can manually adjust subplot margins or use 'axis tight'
% axis tight; % Uncomment this if you want to remove white space around the axes

% Add a legend for the bubble sizes
lgd = legend('Bubble Sizes');
title(lgd, 'Legend');

為了進(jìn)一步美化,我們使用了更現(xiàn)代的parula顏色映射,并為每個(gè)氣泡添加了黑色的邊緣,以便更好地與背景區(qū)分。同時(shí),我對(duì)顏色條標(biāo)簽和標(biāo)題的字體大小進(jìn)行了調(diào)整,并設(shè)置了圖例的位置和樣式,使其更加美觀。
【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

python

import matplotlib.pyplot as plt
import numpy as np

# Generate example data
x_categories = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10']
y_categories = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'B10']
x = np.repeat(range(len(x_categories)), len(y_categories))
y = np.tile(range(len(y_categories)), len(x_categories))
bubble_sizes = np.random.uniform(10, 1000, size=len(x)) # Bubble sizes
colors = np.random.uniform(0.1, 1, size=len(x)) # Color values

# Create the bubble matrix plot
plt.figure(figsize=(10, 8))
scatter = plt.scatter(x, y, s=bubble_sizes, c=colors, cmap='viridis', alpha=0.6, edgecolors="w", linewidth=0.5)

# Add titles and labels
plt.title('Bubble Matrix Plot Example')
plt.xlabel('XAxis')
plt.ylabel('YAxis')

# Change the axis to show the category names
plt.xticks(ticks=np.arange(len(x_categories)), labels=x_categories)
plt.yticks(ticks=np.arange(len(y_categories)), labels=y_categories)

# Add a color bar
plt.colorbar(scatter, label='Color Bar')

# Add a legend for sizes
for size in [100, 300, 600]:
    plt.scatter([], [], c='k', alpha=0.3, s=size, label=str(size))
plt.legend(scatterpoints=1, frameon=False, labelspacing=1, title='Bubble Sizes')

plt.grid(True)
plt.show()

為了進(jìn)一步美化,我們使用了Spectral色彩映射來(lái)提供一個(gè)更豐富的顏色梯度。調(diào)整了標(biāo)題和標(biāo)簽的字體大小,以提高可讀性。修改了顏色條和圖例,使其更具有信息性且易于閱讀。添加了網(wǎng)格線,并調(diào)整了其樣式以更加微妙且不干擾數(shù)據(jù)的展示。
【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一),數(shù)學(xué)建模,數(shù)學(xué)建模,matlab,python

后續(xù)

后續(xù)還會(huì)更新,百分比堆疊線條圖、火山圖、玫瑰圖…有任何問(wèn)題歡迎留言!需要完成的matlab和python代碼看下面!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-792453.html

到了這里,關(guān)于【數(shù)學(xué)建模美賽M獎(jiǎng)速成系列】數(shù)據(jù)可視化方法(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包