3次元散布図のY軸に日付データを使いたい

3次元散布図で使うscatter3関数なのですが、数値型でないとダメだと理解しています(12/1,12/2…というのがダメ?)。そこで、"/"をのぞいて、20221201のようにしたのですが、月が変わると、そこの間の幅が大きくなってしまいグラフでうまく表現できなくなってしまいます(…20221131、20221201、20221202、20221203、…という感じで、20221131、20221201の間が大きい)。等間隔で数か月単位で表現できるようにするにはどうすればよいのでしょうか?

 Réponse acceptée

Hernia Baby
Hernia Baby le 17 Mar 2023

0 votes

datetime型にすればいけます
clear,clc;
日付データ作ります
Y = 2022;
M = repelem((3:4)',20,1);
D = repmat((1:20)',2,1);
T = datetime(Y,M,D);
T(1:5,1)
ans = 5×1 datetime array
01-Mar-2022 02-Mar-2022 03-Mar-2022 04-Mar-2022 05-Mar-2022
テキトーな数値を作って描写します
y = randi([10, 20],40,1);
z = randi([100 200],40,1);
scatter3(T,y,z)

4 commentaires

DAIKI
DAIKI le 18 Mar 2023
ご回答ありがとうございます!
まさに事例のように出したいのですが、エラーがでます。
エラー: scatter3 (line 45)
datetime から数値に変換するには、まず最初に元の datetime を減算し、次に関数 SECONDS、>MINUTES、HOURS、DAYS または YEARS
を使用して数値に変換します。
エラー: Untitled (line 8)
R2015bでは、datetime型は、未対応なのでしょうか…。
DAIKI
DAIKI le 18 Mar 2023
R2022bでちゃんとできました。ありがとうございました!
Hernia Baby
Hernia Baby le 19 Mar 2023
返信遅れて申し訳ありません。
自分の環境がR2022bのため過去のバージョンを理解できてませんでした。
入力引数にあるデータ型にdatetimeがあるのでいけると思いました。
■推測:R2015b非対応について
 エラー文から推測するにR2015bだと数値型に変換しているため、
 YEAR、DAYS等の各成分のみが使えたっぽいですね。
 いつ頃scatter3が今の対応になったかはリリースノートを追えばわかります。
 ただscatter3のドキュメントからだとパット見わかりませんでした。
 ここら辺はMathWorksのヘルプデスクに問い合わせるのがいいかもしれません。
DAIKI
DAIKI le 19 Mar 2023
ご丁寧にありがとうございました。MATLABを最近さわりはじめたばかりで、よくわかっていなかったので助かりました!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 日付と時刻 dans Centre d'aide et File Exchange

Produits

Version

R2015b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!