[解決済み】MATLABでxkcd風グラフを作る
質問
だから、才能ある人たちは、どうすれば xkcd スタイルグラフ Mathematicaで , LaTeXで , Pythonで そして Rで をすでに使用しています。
MATLAB を使って上のようなプロットを作るにはどうしたらよいでしょうか?
私が試したこと
くねくねした線は作りましたが、くねくねした軸はできませんでした。くねくねの線で上書きすることしか思いつかなかったのですが、実際の軸を変更できるようにしたいのです。また、Humorフォントを動作させることができませんでした、使用したコードビットは。
annotation('textbox',[left+left/8 top+0.65*top 0.05525 0.065],...
'String',{'EMBARRASSMENT'},...
'FontSize',24,...
'FontName','Humor',...
'FitBoxToText','off',...
'LineStyle','none');
くねくねとした線は、小さなランダムなノイズを加えて平滑化する実験をしてみました。
smooth(0.05*randn(size(x)),10)
でも、交差したときに周囲に現れる白い背景を作ることができなくて......。
どうすればいいですか?
この問題を解決する方法は2つあると思います。1つ目は、プロットフィーチャーのx/y座標にジッターを追加する方法です。これはプロットを簡単に変更できるという利点がありますが、軸を xkcdyfied にしたい場合は自分で描画しなければなりません (
Rody Oldenhuisのソリューション
). 2 番目の方法は、ジッターのないプロットを作成し、そのプロットに
imtransform
を使用して、画像にランダムな歪みを適用します。これはどんなプロットでも使えるという利点がありますが、編集可能なプロットではなく、画像になってしまいます。
まず#2、そして#1への挑戦を以下に紹介する(#1の方が好きな人は、以下を参照のこと)。 Rodyのソリューション !).
このソリューションは、2つの重要な機能に依存しています。 EXPORT_FIG をファイル交換で取得し、アンチエイリアスのかかったスクリーンショットを取得します。 IMTRANSFORM をクリックすると、変形が得られます。
%# define plot data
x = 1:0.1:10;
y1 = sin(x).*exp(-x/3) + 3;
y2 = 3*exp(-(x-7).^2/2) + 1;
%# plot
fh = figure('color','w');
hold on
plot(x,y1,'b','lineWidth',3);
plot(x,y2,'w','lineWidth',7);
plot(x,y2,'r','lineWidth',3);
xlim([0.95 10])
ylim([0 5])
set(gca,'fontName','Comic Sans MS','fontSize',18,'lineWidth',3,'box','off')
%# add an annotation
annotation(fh,'textarrow',[0.4 0.55],[0.8 0.65],...
'string',sprintf('text%shere',char(10)),'headStyle','none','lineWidth',1.5,...
'fontName','Comic Sans MS','fontSize',14,'verticalAlignment','middle','horizontalAlignment','left')
%# capture with export_fig
im = export_fig('-nocrop',fh);
%# add a bit of border to avoid black edges
im = padarray(im,[15 15 0],255);
%# make distortion grid
sfc = size(im);
[yy,xx]=ndgrid(1:7:sfc(1),1:7:sfc(2));
pts = [xx(:),yy(:)];
tf = cp2tform(pts+randn(size(pts)),pts,'lwm',12);
w = warning;
warning off images:inv_lwm:cannotEvaluateTransfAtSomeOutputLocations
imt = imtransform(im,tf);
warning(w)
%# remove padding
imt = imt(16:end-15,16:end-15,:);
figure('color','w')
imshow(imt)
ジッターの最初の試みは以下の通りです。
%# define plot data
x = 1:0.1:10;
y1 = sin(x).*exp(-x/3) + 3;
y2 = 3*exp(-(x-7).^2/2) + 1;
%# jitter
x = x+randn(size(x))*0.01;
y1 = y1+randn(size(x))*0.01;
y2 = y2+randn(size(x))*0.01;
%# plot
figure('color','w')
hold on
plot(x,y1,'b','lineWidth',3);
plot(x,y2,'w','lineWidth',7);
plot(x,y2,'r','lineWidth',3);
xlim([0.95 10])
ylim([0 5])
set(gca,'fontName','Comic Sans MS','fontSize',18,'lineWidth',3,'box','off')
関連
-
[解決済み] Matlabでシンプソンの1-3 (h / 3)メソッド
-
[解決済み] 演算子のオペランドは、論理スカラー値に変換可能でなければならない。
-
[解決済み] matlabの*と.*の違いは何ですか?
-
[解決済み] パーフカーブで1つの値を返す - matlab
-
[解決済み] 指定された矩形に含まれる配列中の点を見つける( matlab )
-
[解決済み] matlab のプロットベクトルは同じ長さでなければなりません。
-
[解決済み] Matlab の imrect を用いて,新しい矩形の座標を取得します.
-
[解決済み] MATLABでヒストグラムを正規化する方法は?
-
[解決済み] xkcd風のグラフを作るには?
-
[解決済み] Rで2つのグラフを同じプロットで表示する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MATLABの&と&&の違いは何ですか?
-
[解決済み] Matlabのfprintfを使用してテーブルを作成する
-
[解決済み] MATLAB : 周波数分布
-
[解決済み] matlabでrandnを持つ確率変数の範囲はどうなっていますか?
-
[解決済み] 単純論理条件フラグ MATLAB
-
[解決済み] Matlabで描画しています。図形を保存するか、変数を保存するか?
-
[解決済み] MATLABで分数を10進数に変換する【重複】。
-
[解決済み] Matlabでファイル名を変更する - movefileがファイルの代わりにフォルダを作成する
-
[解決済み] 1変数に対するfzeroとfsolveの差分
-
[解決済み] xkcd風のグラフを作るには?