解決案
既にほとんど出来ているように思うのですが...
以下のスクリプトを試していただければと思います.
<主な変更点>
・xlim()を用いて点群がグラフの両端に表示されるのを回避した
・legend()を用いてx軸にラベルを付けた
MATLAB
1% teratail_187515.m
2%{
3 MATLABでの1次元散布図の作り方
4 https://teratail.com/questions/187515
5
6 <実現したいこと>
7 点群が縦一列に並ぶ1次元散布図を作成すること.
8 使用しているデータは3つのグループがあり、
9 1,3のグループの1次元散布図と
10 2のグループのみの1次元散布図を同一のグラフ内に表現したい.
11 そして、その2列それぞれに対してx軸にラベルを付けたい.
12%}
13
14clear, clc;
15
16% データ配列の作成(1~3すべて同様の作成方法)
17% 1列目を全て要素が1の列として連結
18% グループの2のみ、1列目を-0.5することでグラフ作成の段階で2列の1次元散布図にした
19
20% データ生成準備
21n = 10;
22x1 = 1.0;
23x2 = 0.5;
24x3 = x1;
25y_data1 = zeros(n,2);
26y_data2 = zeros(n,2);
27y_data3 = zeros(n,2);
28y_data1(:,1) = x1;
29y_data2(:,1) = x2;
30y_data3(:,1) = x3;
31
32% 描画準備(1)
33Name = 'y\_data';
34xmin = 0.3;
35xmax = 1.2;
36ymin = -1.0;
37ymax = 6.0;
38
39% 描画準備(2)
40figure
41hold on;
42title(Name);
43xlim([xmin xmax]);
44ylim([ymin ymax]);
45ax = gca;
46ax.XTick = [ x2 x1 ];
47ax.XTickLabel = {'x2', 'x1, x3'};
48ax.YTick = [ 0 5 ];
49ax.YAxis.MinorTickValues = ymin : 1.0 : ymax;
50ax.XGrid = 'on';
51ax.YGrid = 'on';
52ax.YMinorGrid = 'on';
53clear Name ax xmin xmax ymin ymax x1 x2 x3;
54
55% データ生成
56for i = 1 : n
57 y_data1(i,2) = rand() * 3.5 + 2.0;
58 y_data2(i,2) = rand() * 5.0;
59 y_data3(i,2) = rand() * 3.0;
60end
61clear i;
62
63% 描画
64scatter(y_data1(:,1), y_data1(:,2), '*', 'g');
65scatter(y_data2(:,1), y_data2(:,2), '*', 'b');
66scatter(y_data3(:,1), y_data3(:,2), '*', 'r');
67lgd = legend('y\_data1','y\_data2','y\_data3');
68lgd.Location = 'North';
69clear lgd;
70
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。