Line Rendering Problem

I have a set of numbers that, when plotted, causes the linestyle to be displayed incorrectly.
The code below gives my dataset and plots them in subplot 1, the second subplot is an identical line (same max,min and number of datapoints in x and y), but with the datapoints evenly spaced along the line.
On my system (Matlab 7.11.0.584 (R2010b) running on Mac OS X 10.7.1) the line in the first plot is not displayed correctly, while it is in the second. Mysterious!
Any ideas?
Here's a picture of what I get... https://files.me.com/oscarbranson/siin06
% My data set
subplot(2,1,1)
x1=[4.98270000000000,4.95770000000000,4.94240000000000,4.95240000000000,4.93420000000000,4.98760000000000,4.98550000000000,4.95800000000000,4.96170000000000,4.94190000000000,4.98210000000000,4.98610000000000,4.95470000000000,4.96070000000000,4.93870000000000,4.98770000000000,4.98130000000000,4.98130000000000,4.98140000000000,4.98140000000000,4.98160000000000,4.98160000000000,4.98130000000000,4.98130000000000,4.98150000000000,4.98150000000000,4.98080000000000;];
y1=[17.0600972366516,16.9321690873624,16.8538770599974,16.9050483197131,16.8119166270306,17.0851711539123,17.0744251893720,16.9337042251539,16.9526375912487,16.8513184970117,17.0570269610687,17.0774954649550,16.9168177094477,16.9475204652771,16.8349436939026,17.0856828665095,17.0529332602914,17.0529332602914,17.0534449728886,17.0534449728886,17.0544683980829,17.0544683980829,17.0529332602914,17.0529332602914,17.0539566854857,17.0539566854857,17.0503746973056;];
plot(x1,y1,'r--')
% A generated line with the same number of data points and the same x and y
% limits.
subplot(2,1,2)
x2=min(x1):((max(x1)-min(x1))/(length(x1)-1)):max(x1);
y2=min(y1):((max(y1)-min(y1))/(length(y1)-1)):max(y1);
plot(x2,y2,'r--')

 采纳的回答

Your x1 are not sorted:
[x1,idx] = sort(x1);
plot(x1,y1(idx),'r--')
What happens is that the coordinates trace a trajectory that goes back and forth and the dashed sequence of the run in one direction can be overwritten by the a change in direction.

2 个评论

@Oleg, I think your explanation is more to the point (+1). My explanation also provides some insight. The two curves are different. They should not be expected to be the same. In this case they look same only because the line happens to be almost straight.
Thanks! So simple...

请先登录,再进行评论。

更多回答(1 个)

Fangjun Jiang
Fangjun Jiang 2011-8-30

0 个投票

I think it's expected. If you change your plot command (both) to be plot(x1,y1,'rs'), you will see the effect. (x1,y1) is not evenly spaced. The line between is the interpretation. If you change it to be plot(x1,y1,'r-'), they look more or less the same.

类别

Community Treasure Hunt

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

Start Hunting!

Translated by