ShowText for 2d plot or Converting plot to contour

4 ビュー (過去 30 日間)
Babak Ravaji
Babak Ravaji 2019 年 1 月 23 日
回答済み: Markus Klemm 2019 年 3 月 14 日
In order to take advantage of contour capability of "ShowText", I want to convert my 2d plot into a contour and then show a value on the curve. Anyone can help on converting 2d plot to contour or any better suggestion to show a specific value on the curve nicely like following?
  1 件のコメント
Walter Roberson
Walter Roberson 2019 年 1 月 24 日
What is the input to this? Is it an axes that has some lines drawn on it, and the task requires extracting data from the lines and somehow building a matrix suitable for use with contour()?

サインインしてコメントする。

回答 (3 件)

Babak Ravaji
Babak Ravaji 2019 年 1 月 24 日
The input is simply some curves in the X-Y plane. for example it is:
X Y
0 0
0.1 1
0.2 2
0.3 1.5
0.4 4
or any other plots in the X-Y plane.
  1 件のコメント
Walter Roberson
Walter Roberson 2019 年 1 月 24 日
Is the input the data that defines the curves, or is the input the already-drawn curves?
Is there a constant z coordinate associated with each curve?
Is the real question here how to label a curve in the middle of the curve? If so then is the line-gap-label-gap-line required or could it be label just off of the curve?

サインインしてコメントする。


Babak Ravaji
Babak Ravaji 2019 年 1 月 25 日
Input data that define the curves is available.
Yes there is a constant z associated to each curve.
You are right, the real question is how to lable a curve in the middle of the curve. Yes the line-gap-label-gap-line is required.
  1 件のコメント
Walter Roberson
Walter Roberson 2019 年 1 月 25 日
I do not see any MATLAB routine for that purpose, and I do not notice anything in the File Exchange either.
You could write a function for it that chose a location near the midpoint of the curve, and introduced artificial stopping in it, [X(1:n), X_before_gap, nan, X_after_gap, X(n+1:end)] and likewise for Y, and then text() into the gap.

サインインしてコメントする。


Markus Klemm
Markus Klemm 2019 年 3 月 14 日
Hi,
I just had the same problem and wrote a small, straight forward function, which works for me.
Maybe it can serve someone else as well?
% inp_x: 1xM-vector with x-coordinates
% inp_z: 1xN-vector with z-coordinates (the 'text-Info')
% inp_y: MxN-matrix with datapoints
function c=plotPseudoContour(inp_x,inp_z,inp_y)
x=linspace(min(inp_x),max(inp_x),500);
y=linspace(min(inp_z),max(inp_z),500);
[X,Y]=meshgrid(x,y);
[X_inp,Y_inp]=meshgrid(inp_x,inp_z);
Z=interp2(X_inp,Y_inp,inp_y',X,Y);
c=contour(X,Z,Y,inp_z,'ShowText','on');

カテゴリ

Help Center および File ExchangeContour Plots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by