画图问题,点过多,用星号画图,结果成了粗线。
Rt图中的星号都连到一起,成了粗实线。 点太密了,可以让间隔大一些 应该也可以把星号弄小点。。。 放大以后可以看出各个点
回复 沙发 friendchj 的帖子
我当然知道点太密了,我也知道seeksun说的什么放大一点。。。。我就想看看你们有没有什么建设性建议。
回复 板凳 dtczhl 的帖子
把星号弄小?
你的想法很独特,给点可以实现的简例。
[ 本帖最后由 ChaChing 于 2010-8-10 15:15 编辑 ] 原帖由 beyondhxf 于 2009-6-8 12:23 发表 http://www.chinavib.com/forum/images/common/back.gif
把星号弄小?
你的想法很独特,给点可以实现的简例。
我原先试图较小符号,发现效果不明显,太小的话,*号和点看起来一样,所以才建议减少点数。试比较:
clc; clear
x=1:0.05:5; y=1:length(x);
subplot(221); plot(y,x,'*'); title('正常')
subplot(222); plot(y(1:4:end),x(1:4:end),'*'); title('减少点')
subplot(223); plot(y,x,'*','MarkerSize',4); title('减小符号,默认为6')
subplot(224); plot(y,x,'*','MarkerSize',1); title('减小符号,默认为6')
[ 本帖最后由 ChaChing 于 2010-8-10 15:14 编辑 ] 试试少画些星号
http://www.mathworks.com/matlabcentral/fileexchange/23279
回复 8楼 ChaChing 的帖子
我说ChaChing,你很高明啊,每次都到点子上,这个网站是怎么回事?有人自己开发的Matlab程序?
顺便把调用格式也写出来吧。
x=-1:0.01:1;
y=sin(x);
xx=plot(x,y)
addmarkers(xx,10)
回复 7楼 friendchj 的帖子
其实我自己写了一个和ChaChing说的那个功能差不多的函数。function plotnew(p,x,y1)
clear xx
clear yy1
L=length(x);
%p:控制符号的密度;
%s=round(L/p-1);%p如果取太大,那么就会造成比较明显的误差,一般50以内可以。
for j=1:p;
i=round((j-1)*L/p)+1;
xx(j)=x(i);
yy1(j)=y1(i);
%yy2(j)=y2(i);
%yy3(j)=y3(i);
end
hh=plot(x,y1,'b',xx,yy1,'*');
legend(hh(2),'哈哈');
回复 10楼 beyondhxf 的帖子
画好曲线后, 将曲线的数据按一定间隔抽取出来再画没有线型的星号参考
xv=1:0.1:10;
yv=sin(xv);
plot(xv,yv);
hold on
plot(xv(1:10:end),yv(1:10:end),'*','linestyle','none');
MATLAB就有这个麻烦,很多年了也不解决这个问题
回复 11楼 VibrationMaster 的帖子
到目前为止,都是在原有的直线上覆盖星号。同样的原理。 楼上的方法想的挺好,但是问题又来了,在你添加Legend时会发现多了几个无用的标识……
回复 13楼 Sunvisual 的帖子
好问题! 但应该不难解决请搜一下应可找到答案 本帖最后由 cjfunsw 于 2012-5-24 14:41 编辑
回复 7 # ChaChing 的帖子
ChaChing,你好,我也想用你提供的这个说明。但是我尽管看了Beyondhxf的例子,我还是用不了。请问能提供一个详细的例子,应用这个功能的吗?
或者其他朋友用过这个功能的,能否提供下详细的例子。我是把这个funtion放在m文件开头,然后就从excel里读取数据,再plot图片。然后用addmarkers()的功能。但是总是提示说错误。因为那个narin<1所以出现错误,是怎么回事呢。
我是这么用的,请问哪里错了。
functionho=addmarkers(hi,n)
% ADDMARKERS Add a pre-defined number of markers to a plot instead of
% one at each datapoint which is default in Matlab.
%
% Usage:
% ADDMARKERS(HI) adds 5 markers to the input handle HI, J=1..length(HI)
% ADDMARKERS(HI,N) adds N markers to the input handle HI, J=1..length(HI)
% HO=ADDMARKERS(...) returns the output handle HO for future usage such as
% changing colors, markers, etc.
%
% Hint: use the output handle when adding legends, e.g.
% LEGEND(HO,'legend 1',...,'legend N')
%
% The markers will be added in the following order:
%
% o Circle
% s Square
% d Diamond
% x Cross
% + Plus sign
% * Asterisk
% . Point
% ^ Upward-pointing triangle
% v Downward-pointing triangle
% > Right-pointing triangle
% < Left-pointing triangle
% p Five-pointed star (pentagram)
% h Six-pointed start (hexagram)
%
% By Matthijs Klomp at Saab Automobile AB, 2009-10-11
% E-mail: matthijs.klomp@gm.com
%
if
nargin<2, n=5; end % default number of markers
if
nargin<1, error('Supply an input handle as input argument.'), end
figure(get(get(hi(1),
'parent'),'parent'))% plot in the figure of the handle
subplot(get(hi(1),
'parent')) % plot in the subplot of the handle
hold
on % do not overwrite the current plot
markers = {
'o','s','d','^','v','x','+','*','.','>','<','p','h'};
ho = hi;
% initialize output handle
for
i = 1:length(hi)
x = get(hi(i),
'xdata'); % get the independent variable
y = get(hi(i),
'ydata'); % get the dependent variable data
s = linspace(1,n,length(x));
% sampling independent variable
sn = ;
% add some noise to avoid overlap
xrs = interp1(s,x,sn,
'nearest'); % downsample to n datapoints
yrs = interp1(s,y,sn,
'nearest'); % downsample to n datapoints
plot(xrs,yrs,
... % Plot the markers
'Marker',markers{i},'LineStyle','None','Color',get(hi(i),'Color'));
ho(i) = plot(,*NaN,
... % Create the output handle
'Marker',markers{i},...
'LineStyle',get(hi(i),'Linestyle'),...
'Color',get(hi(i),'Color'));
end
if
nargout==0, clear ho, end
A=xlsread(
'C:\D10RMethod1.xlsx','sheet2','a3:j1953');
x2=plot(A(:,1),A(:,2))
ho=addmarkers(x2,10)
谢谢。
回复 14 # cjfunsw 的帖子
搜索下, 先学下函数的使用!
页:
[1]