- plot3:Lineオブジェクト ⇒ マーカーの色・形・サイズをデータ点毎に設定できない(表示有無は設定できる)
- scatter3:Scatterオブジェクト ⇒ マーカーの色・サイズをデータ点毎に設定できる (形は設定できない)
特定のマーカーのサイズ,形の変更方法
56 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
下記のコードは各関節の時系列3次元データをプロットしているのですが,データの始点のマーカーの大きさ,もしくは形を変更したいと考えております.
始点データのマーカーのサイズ,形を変更する方法をご教授して頂きたいです.
%ファイル読み込み
fname = "xsens";
T = readtable(fname,'Sheet','Segment Position');
T = T(1202:1422,:); %投球動作範囲
%データ分割
LeftUpperArm = [T.LeftUpperArmX,T.LeftUpperArmY,T.LeftUpperArmZ];
LeftForeArm = [T.LeftForearmX,T.LeftForearmY,T.LeftForearmZ];
LeftHand = [T.LeftHandX,T.LeftHandY,T.LeftHandZ];
%%
%3D描画
h1 = plot3(RightUpperArm(:,1),RightUpperArm(:,2),RightUpperArm(:,3),"or");
hold on
h2 = plot3(RightForeArm(:,1),RightForeArm(:,2),RightForeArm(:,3),"ob");
h3 = plot3(RightHand(:,1),RightHand(:,2),RightHand(:,3),"og");
%label
xlabel("x",'FontSize',12,"FontWeight","bold",'Color','r')
ylabel("y",'FontSize',12,"FontWeight","bold",'Color','b')
zlabel("z",'FontSize',12,"FontWeight","bold",'Color','g')
legend("UpperArm","ForeArm","Hand")
0 commentaires
Réponse acceptée
Atsushi Ueno
le 9 Déc 2023
> 始点データのマーカーのサイズ,形を変更する方法をご教授して頂きたいです
hold onでグラフ描画内容を保持後、始点データのみ個別にプロットすれば事済む話ですが、データ系列内の「データ点毎にプロパティ値を設定」する事もできる事もまた事実です。
%ファイル読み込み
fname = "xsens";
T = readtable(fname,'Sheet','Segment Position');
T = T(1202:1422,:); %投球動作範囲
%データ分割
%LeftUpperArm = [T.LeftUpperArmX,T.LeftUpperArmY,T.LeftUpperArmZ];
%LeftForeArm = [T.LeftForearmX,T.LeftForearmY,T.LeftForearmZ];
%LeftHand = [T.LeftHandX,T.LeftHandY,T.LeftHandZ];
%%
%3D描画
%h1 = plot3(RightUpperArm(:,1),RightUpperArm(:,2),RightUpperArm(:,3),"or");
%hold on
%h2 = plot3(RightForeArm(:,1),RightForeArm(:,2),RightForeArm(:,3),"ob");
%h3 = plot3(RightHand(:,1),RightHand(:,2),RightHand(:,3),"og");
h1 = scatter3(T, ["RightUpperArmX","RightForearmX","RightHandX"] ...
, ["RightUpperArmY","RightForearmY","RightHandY"] ...
, ["RightUpperArmZ","RightForearmZ","RightHandZ"]);
%label
xlabel("x",'FontSize',12,"FontWeight","bold",'Color','r')
ylabel("y",'FontSize',12,"FontWeight","bold",'Color','b')
zlabel("z",'FontSize',12,"FontWeight","bold",'Color','g')
legend("UpperArm","ForeArm","Hand")
% 描画設定
myLength = size(h1(1).XData,2); % 投球動作範囲の長さを取得
myMarker = {"o",">","<"}; % マーカーの形をデータ系列毎(o・>・<)に設定
[h1.Marker] = myMarker{:}; % マーカーの形はデータ点毎に設定できない
mySize = [200,repmat(50,1,myLength-1)];
%[h1.SizeDataMode] = deal("manual"); % データ個別のサイズ(SizeData)。無くても自動設定される
[h1.SizeData] = deal(mySize); % マーカーのサイズ(始点のみ200、他は50に設定)
myRed = cat(1,[0,0,0],repmat([1,0,0],myLength-1,1));
myBlue = cat(1,[0,0,0],repmat([0,0,1],myLength-1,1));
myGreen = cat(1,[0,0,0],repmat([0,1,0],myLength-1,1));
myColor = {myRed,myBlue,myGreen};
%[h1.MarkerEdgeColor] = deal("flat"); % データ個別の色(CData)。無くても自動設定される
[h1.CData] = myColor{:}; % マーカーの色(始点のみ黒、他はデータ系列毎(赤・青・緑)に設定)
2 commentaires
Atsushi Ueno
le 9 Déc 2023
Déplacé(e) : Atsushi Ueno
le 9 Déc 2023
余談ですが:
- 入力データ1行目の項目名が MATLAB の変数名として有効ではない様です
- 上記のため、スペースを削除するなど項目名が自動的に変更されています
- readtable 関数で読み込んだテーブルを直接 plot3 関数に入力する事ができます
- plot3 関数では複数のラインを一度に描画する事ができます
- その場合「LineSpecの指定」は「Lineのプロパティ設定」として行います
T = readtable("xsens","Sheet","Segment Position");
T = T(1202:1422,:); %投球動作範囲
%3D描画
h1 = plot3(T, ["RightUpperArmX","RightForearmX","RightHandX"] ...
, ["RightUpperArmY","RightForearmY","RightHandY"] ...
, ["RightUpperArmZ","RightForearmZ","RightHandZ"]);
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur ライン プロット dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!