簡體   English   中英

用 Matlab 繪制 3D 條形圖

[英]Plotting 3D bar chart with Matlab

我有一個 CSV 文件,其結構如下:

epochs,learningrate, rmse
10,0.002,1
15,0.002,1
20,0.002,1
25,0.002,0.9799
30,0.002,0.9669
35,0.002,0.9561
40,0.002,0.9491
45,0.002,0.9428
10,0.003,1
15,0.003,0.9902
20,0.003,0.9667
25,0.003,0.9542
30,0.003,0.943
35,0.003,0.9357
40,0.003,0.9318
45,0.003,0.9267
10,0.004,1.0001
15,0.004,0.9668
20,0.004,0.9512
25,0.004,0.9393
30,0.004,0.932
35,0.004,0.9271
40,0.004,0.924
45,0.004,0.923
10,0.005,0.9813
15,0.005,0.9552
20,0.005,0.9429
25,0.005,0.9328
30,0.005,0.9285
35,0.005,0.9245
40,0.005,0.924
45,0.005,0.9213
10,0.006,0.9678
15,0.006,0.9465
20,0.006,0.9353
25,0.006,0.9284
30,0.006,0.9256
35,0.006,0.9235
40,0.006,0.9258
45,0.006,0.9245
10,0.007,0.9633
15,0.007,0.9424
20,0.007,0.9319
25,0.007,0.9281
30,0.007,0.9246
35,0.007,0.9249
40,0.007,0.9273
45,0.007,0.9263
10,0.008,0.957
15,0.008,0.9391
20,0.008,0.9301
25,0.008,0.928
30,0.008,0.9256
35,0.008,0.9264
40,0.008,0.9275
45,0.008,0.9291
10,0.009,0.9519
15,0.009,0.9335
20,0.009,0.9271
25,0.009,0.9254
30,0.009,0.9299
35,0.009,0.9287
40,0.009,0.9308
45,0.009,0.9334
10,0.01,0.9476
15,0.01,0.9332
20,0.01,0.9286
25,0.01,0.9283
30,0.01,0.9292
35,0.01,0.9311
40,0.01,0.9341
45,0.01,0.9362
,,
10,0.011,0.9459
15,0.011,0.9344
20,0.011,0.9271
25,0.011,0.9293
30,0.011,0.9309
35,0.011,0.9343
40,0.011,0.9348
45,0.011,0.9375
,,
10,0.012,0.9438
15,0.012,0.9322
20,0.012,0.9305
25,0.012,0.9323
30,0.012,0.9323
35,0.012,0.9359
40,0.012,0.9363
45,0.012,0.9398
,,
10,0.013,0.9402
15,0.013,0.9318
20,0.013,0.9313
25,0.013,0.9327
30,0.013,0.9365
35,0.013,0.9369
40,0.013,0.9385
45,0.013,0.9398
,,
10,0.014,0.9389
15,0.014,0.9342
20,0.014,0.9321
25,0.014,0.9329
30,0.014,0.9387
35,0.014,0.9404
40,0.014,0.9404
45,0.014,0.9405
,,
10,0.015,0.9393
15,0.015,0.9345
20,0.015,0.9346
25,0.015,0.9372
30,0.015,0.9369
35,0.015,0.9404
40,0.015,0.9429
45,0.015,0.9416
,,
10,0.016,0.9394
15,0.016,0.9359
20,0.016,0.9353
25,0.016,0.9375
30,0.016,0.9416
35,0.016,0.9421
40,0.016,0.9449
45,0.016,0.9449
,,
10,0.017,0.9389
15,0.017,0.9356
20,0.017,0.9383
25,0.017,0.9399
30,0.017,0.9427
35,0.017,0.9456
40,0.017,0.9451
45,0.017,0.9449
,,
10,0.018,0.9397
15,0.018,0.9392
20,0.018,0.94
25,0.018,0.9411
30,0.018,0.9446
35,0.018,0.9478
40,0.018,0.9474
45,0.018,0.9489
10,0.019,0.9372
15,0.019,0.938
20,0.019,0.9409
25,0.019,0.9433
30,0.019,0.9462
35,0.019,0.9452
40,0.019,0.9464
45,0.019,0.9477

MWE:

lambda1 = [1e-3 1e-3 1e-3 1e-3 1e-3 1e-3 1e-3 1e-3 1e-3 1e-3 1e-3     5e-3 5e-3 5e-3 5e-3 5e-3 5e-3 5e-3 5e-3 5e-3 5e-3 5e-3    1e-2 1e-2 1e-2 1e-2 1e-2 1e-2 1e-2 1e-2 1e-2 1e-2  1e-2 5e-2 5e-2 5e-2 5e-2 5e-2 5e-2 5e-2 5e-2 5e-2 5e-2 5e-2    1e-1 1e-1 1e-1 1e-1 1e-1 1e-1 1e-1 1e-1 1e-1 1e-1  1e-1    5e-1 5e-1 5e-1 5e-1 5e-1 5e-1 5e-1 5e-1 5e-1 5e-1 5e-1     1  1  1  1  1  1  1  1  1  1  1  5 5 5 5 5 5 5 5 5 5 5   10 10 10 10 10 10 10 10 10 10 10 50 50 50 50 50 50 50 50 50 50 50   100 100 100 100 100 100 100 100 100 100 100 ] ;
L1=reshape(lambda1,[11,11]);
lambda2=[1e-1  5e-1 1   5   10  50  100 500 1000    5000    10000    1e-1  5e-1 1   5   10  50  100 500 1000    5000    10000   1e-1  5e-1  1   5   10  50  100 500 1000    5000    10000  1e-1  5e-1   1   5   10  50  100 500 1000    5000    10000  1e-1  5e-1   1   5   10  50  100 500 1000    5000    10000  1e-1  5e-1   1   5   10  50  100 500 1000    5000    10000  1e-1  5e-1   1   5   10  50  100 500 1000    5000    10000  1e-1  5e-1   1   5   10  50  100 500 1000    5000    10000  1e-1  5e-1   1   5   10  50  100 500 1000    5000    10000  1e-1  5e-1   1   5   10  50  100 500 1000    5000    10000  1e-1  5e-1   1   5   10  50  100 500 1000    5000    10000 ];            
L2=reshape(lambda2,[11,11]);
rmse_abundance = [1 2 3 4 5 6 7 8 9 10 11  12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11  12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11  12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11  12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11  12 13 14 15 16 17 18 19 20 21 22    23 24 25 26 27 28 29 90 91 92 93];       
figure ;
rmse_abu = reshape(rmse_abundance,[11,11]);
bar3(rmse_abu) ;
set(gca(gcf), 'xticklabel',{'1e-3', '5e-3' ,'1e-2', '5e-2', '1e-1', '5e-1' ,'1' ,'5' ,'10', '50' ,'100'},'yticklabel',{'1e-1', '5e-1', '1', '5' ,'10','50','100' ,'500' ,'1e3', '5e3' ,'1e4'});
ylabel('gamma') ; xlabel ('learning rate'); zlabel('rmse ') ;
title('SGD');

在此處輸入圖片說明

我想繪制由紀元、學習率(伽馬)和 rmse 組成的所有行。

例如,我想要 z 軸上的 rmse、x 軸上的伽瑪和 y 軸上的歷元。 我需要使用我的數據,即上面發布的數據,而不是實際制作繪圖的數據(lambda1、lambda2、rmse_abu)。 我怎么做?

您發布的數據與您要查找的圖不相似。 盡管如此,我認為您應該嘗試這樣做來實現您的目標:

https://www.mathworks.com/matlabcentral/fileexchange/1420-scatterbar3

我還發現這實際上可能更接近您正在尋找的內容:

在 Matlab 中使用 bar3 時如何設置 x 和 y 值?

只要你願意,就有愛。 不要聽起來像沒有十四行詩!

我希望這有效!

epochs = [10 15 20 25 30 35 40 45     10 15 20 25 30 35 40 45    10 15 20 25 30 35 40 45      10 15 20 25 30 35 40 45      10 15 20 25 30 35 40 45      10 15 20 25 30 35 40 45] ;
L1=reshape(epochs,[8,6]);
learning_rate=[0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002     0.003 0.003 0.003 0.003 0.003 0.003 0.003 0.003     0.004 0.004 0.004 0.004 0.004 0.004 0.004 0.004     0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005      0.006 0.006 0.006 0.006 0.006 0.006 0.006 0.006     0.007 0.007 0.007 0.007 0.007 0.007 0.007 0.007];            
L2=reshape(learning_rate,[8,6]);
rmse_abundance = [ 0.9904 0.9901 0.9799 0.9669 0.9561 0.9491 0.9428 0.9428     0.9900 0.9902 0.9667 0.9542 0.943 0.9357 0.9318 0.9267     1.0001 0.9668 0.9512 0.9393 0.932 0.9271 0.924 0.923     0.9813 0.9552 0.9429 0.9328 0.9285 0.9245 0.924 0.9213    0.9678 0.9465 0.9353 0.9284 0.9256 0.9235 0.9258 0.9245    0.9633 0.9424 0.9319 0.9281 0.9246 0.9249 0.9273 0.9263];       
figure ;
rmse_abu = reshape(rmse_abundance,[8,6]);
bar3(rmse_abu) ;
set(gca(gcf), 'yticklabel',{'10', '15' ,'20', '25', '30', '35' ,'40' ,'45'},'xticklabel',{'0.002', '0.003', '0.004', '0.005' ,'0.006','0.007','100' ,'500' ,'1e3', '5e3' ,'1e4'});
ylabel('epochs') ; xlabel ('gamma'); zlabel('rmse ') ;
title('SGD');

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM