社区
其他开发语言
帖子详情
MATLAB 中画双坐标轴散点图,求可改变y轴与点的颜色方法
keisxw
2015-12-28 11:38:02
使用plotyy画
散点图
,命令为 plotyy(x,y1,x,y2,'scatter');但画出的图点的颜色全是蓝色;而如果使用scatter 和hold on命令画图,不能设置双y轴的范围。
请教各位,能否有解决办法??!!
...全文
1312
2
打赏
收藏
MATLAB 中画双坐标轴散点图,求可改变y轴与点的颜色方法
使用plotyy画散点图,命令为 plotyy(x,y1,x,y2,'scatter');但画出的图点的颜色全是蓝色;而如果使用scatter 和hold on命令画图,不能设置双y轴的范围。 请教各位,能否有解决办法??!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
domonate
2015-12-31
打赏
举报
回复
有个比较笨的办法是画好后在图片上进行编辑,不用编程就可以实现。
outman009
2015-12-30
打赏
举报
回复
help plotyy和help plot,应该是可以设置颜色和点的形状的,建议先摸索一下画单y轴的plot函数。
Matlab
-graphics-classic-case.zip_
matlab
散
点
图
_三维切片_
坐标轴
误差_数据动画_表面
matlab
经典绘图案例。包括三维曲面z=x^2+y^2的动画、正弦曲线的动画、切片图、向量图、三维彗星图、三角形网格图、三角形表面图、球面、等值线图、三维瀑布图、三维火柴杆图、三维
散
点
图
、柱形图、三维条形图、三维饼图、带形图、曲线图、高斯分布函数的曲面图、高斯分布函数的网格图、5阶高斯分布矩阵、梯度场矢量图、罗盘图、玫瑰花图、羽列图、数据向量的单轴对数坐标图、矩阵的条形图 矩阵的面积图、二维饼图、
散
点
图
、误差图、火柴杆图和碗状曲面图等等。
matlab
离散
点
连成的两曲线的交
点
-intersections.m
matlab
离散
点
连成的两曲线的交
点
-intersections.m 本帖最后由 kastin 于 2012-12-29 11:47 编辑 引言 曾经思考过曲面
求
交,结果发现是学术界的一个难题,并且也想出了一个当前广泛使用
方法
原理一样的近似解法(追踪法)。当然网上也有很多
方法
,只不过那些
方法
非常粗糙,无非就是meshgrid出离散网格,比较两曲面在某位置的坐标是否在某一精度范围内,然后标记显示之。这个
方法
仅仅当离散网格非常细的时候才比较精确。除此之外,还有个非常严重的问题:上面的“精度范围”不是你随心所欲给的,而且也没规律寻找,当给得不恰当的时候,在格
点
处两曲面
点
作比较,会出很多个符合要
求
的
点
,或者一个也没有。这样就会使得交线非常曲折,甚至断裂等,严重影响精确度。 ———————————————————分割线———————————————————————— 当然,既然有曲面
求
交,那么也有曲线
求
交,其基本结构就是两曲线
求
交。只是曲线
求
交问题,事先得澄清一些注意
点
: 1. 数学分析层面
求
两曲线交
点
,其实就是方程组
求
解; 2. “曲线”概念包括“直线”(处处曲率半径为无穷大); 3.
Matlab
的重
点
是离散
点
矩阵运算,因此所有运算都是基于离散的,因而这里的曲线并不是绝对光滑的。 4. 近似试探与未知函数表达式。 对于1,我想说的是,如果你想要
求
得两曲线的精确交
点
,并且一个不漏,那就直接
求
解方程组,不用看本帖下文; 对于2,直线在
Matlab
里面是两个
点
确定,因此交
点
如果是一段线(无穷个
点
)的情况,可能只是显示两端
点
为交
点
; 对于3,很简单的例子,参数方程 x=cos,y=sin 在数学分析(即连续空间)层面上是个圆,但是如果你在离散t的时候,间距比较大,那么最后
Matlab
绘制的图像不是圆,而是正多边形了。因此,此时我们讨论曲线交
点
是这个离散
点
连线的图形与其他图形的交
点
,而非圆与其他交
点
。这也是我在标题中加了“离散
点
连成”的修饰词,防止被误会。 对于4,既然是
求
曲线交
点
,那么本
方法
可以作为
求
方程组的近似解。当然,如果离散
点
够多,解的精确度可以保证,不过不能保证一个不漏。另外就是,对于一组离散
点
构成的曲线,很难知道它们的解析表达式,因此想通过非线性方程组
求
解的
方法
来
求
交
点
,就不大可能了(不过你可以用曲线拟合出函数解析式),因此,本帖的
方法
将会是一个较为有效
求
交
点
的
方法
。 废话了那么多,下面就说说曲线
求
交
点
的
方法
吧。除了
求
解方程组,很多人想到的
方法
就是“离散
点
判断距离是否足够接近”,这个
方法
原理跟引言中曲面
求
交的
方法
是一样的。因此缺
点
也是一样的——太粗糙了。网上这种
方法
的代码也很多,这里就不上了。 下面将阐述我的
方法
以及给出例子代码。 我有两种思路,一种是高级绘图层面的(不涉及到底层操作),一种是底层的。我只给出了第一种的代码,因为我不会底层操作。 思路一:既然
matlab
曲线绘图是通过有序离散
点
依次连线形成,也就是说,通过“以直代曲”的过程,那么曲线交
点
无非就是离散
点
(结
点
)或者两线段交
点
。这比上面直接用交
点
附近的结
点
替代交
点
的
方法
要精确得多了。而两直线交
点
很容易
求
,只要知道四个
点
坐标,那么交
点
精确坐标自然可以表示出来。这就是
求
交
点
的原理。只是还有一些细节处理和要注意的地方,我会留到后面再详细说。 思路二:仔细观察两曲线交
点
的特性,很容易发现,其实交
点
就是操作系统底层绘图重叠的那些像素
点
。因此,只要给要绘制的像素
点
做个标记,将那些重合的
点
突出显示(比如换个
颜色
),那么就相当于显示出交
点
了。这种
方法
由于是本质性的,因此不会遗漏任何交
点
,而且精确度极高,适用范围广。
Matlab
提供的plot plot3 surf等绘图函数都属于高级绘图,底层绘图(或称低级绘图)只有line surface以及patch等少数函数。但是,这里的“底层”并非真正的底层,因为它还是经过封装了的,而C 的MFC里面直接用刷子绘图,那才是依靠操作系统完成的真正的“底层”绘图操作(包括所有窗口都是操作系统绘制的)。这里扯远了,想要说明的就是底层绘图的概念而已。只是我不会用
matlab
实现这些底层绘图。 上面说了思路,下面就详细说说一些注意
点
和需要处理的细节。 为了算法的健壮性,就必须考虑各种奇异的情况,防止bug。我们要考虑曲线有分支(很多代数曲线是这样的,代数几何里面研究的东西)、间断跳跃(有绝对值函数或者存在渐近线情况)、首尾是交
点
、在切
点
相交,等等这些情况。而且对于定位交
点
处附近的四个最近端
点
也是个问题(因为这里存在一个情况,如果曲线1上的一条线段与曲线2上的两条或者以上的线段相交,我的程序因为这个问题没能有效解决,出现在一些非常特殊的情况下会遗漏部分交
点
)。上面的情况如果不考虑,那么你的程序就会出现各种各样的问题。 对于通常情况,我考虑使用变号法则来判断交
点
(也就是高数里面“连续函数变号端
点
内存在零
点
”),对于上面说的特殊情况,那么预先处理,比如先看是否存在eps内的,或者为零的结
点
,有则直接记录,没有的话,通过两线段
求
交来确定交
点
。至于遍历顺序的问题,为了简便,我指考虑两曲线离散
点
个数相同的情况(因为不同的话,会出现一些无法处理的情况),而且优先考虑离散
点
的坐标值中x或者y都相同的情况(比如x=0:0.1:pi; y1=sin, y2=x.^2这两条曲线的x值相同分布)。 下面是曲线y=cos.*exp)与y2=sin.^2 cos在[0:pi/18:2*pi]区间内的交
点
的代码: 注意:我没有写成接口的形式,虽然对于比那些较懒的人来说不太方便,但是这样做是为了让你能更好弄懂原理,并能自己改造代码。因此,下面的代码可以稍作修改,就能解决别的曲线
求
交
点
。这样,不愿思考的懒人就没法达到自己的目的了~% 绘制两离散曲线的交
点
% 注意: % 1. 这里的“交
点
”指的是离散
点
连线绘出的图形的交
点
,而非函数或者方程理论分析上的交
点
, % 因此,这个程序不能作为
求
根来用。 % 2. 要
求
两曲线的离散
点
的个数一样。 % 3. 两个曲线出现参数方程的话,大多数情况正常。但是经测试发现,对于某些非常特殊的情况会出现bug, % 除非调用ezplot的数据(xdata,ydata)。 % % by kastin @Mar 21, 2012 clear; debug=false; %关闭显示
求
交
点
过程 % 曲线1 x=0:pi/18:2*pi; y=cos.*exp); % 曲线2 [x1 N]=sort; %此处对于C1参数方程,C2为显式函数;或者均为参数方程时候有用 % 下面几句代码在本个案下没有什么特殊作用,但是当出现参数方程的时候,下面的
方法
改动一下就会有用。 y1=sin.^2 cos; %用于作图 x2=x; y2=sin.^2 cos; %用于寻
点
h=plot; y<=eps)=0; y20; neg=cy<=0; %确定变号位置 fro=diff~=0; %变号的前导位置 rel=diff~=0; %变号的尾巴位置 zpf=find; %记录索引 zpr=find 1; %记录索引 zpfr=[zpf; zpr]; hold on % 观看
求
交
点
过程 if debug, hp=plot,y,'r.-',x2,y2,'g.-'); end %线性
求
交 x0=.*-y)-x.*-y))./ y2-y-y2); y0=y ).*-y)./-x); if any), y0=y2; end %加入已经判断为零的位置 x0=[x<=eps) x0].'; y0=[y<=eps) y0].'; hc=plot; %绘制交
点
if debug, legend;hp],'C1','C2','交
点
','微线段1','微线段2',0); end legend xlabel, ylabel, zlabel; title axis equal hold off disp disp) %排除重复的
点
复制代码经测试十几种奇怪的曲线相交(包括参数方程形式的曲线),目前发现上述代码的
方法
有四种情况会出现遗漏一两个交
点
。(其实上面代码本意是
求
显式函数的曲线交
点
,或者未知表达式的离散
点
曲线的交
点
,并未针对参数方程,隐函数方程做优化,但是可以凑合着用用。)
R语言绘图基础
介绍R语言的绘图基础,如固有
颜色
、RGB取色、主题调色板介绍,文字字体、
颜色
、大小等参数详解,
点
样式、
颜色
、大小等参数详解,线条样式、
颜色
、粗细等参数详解;详细介绍R低级绘图函数:标题、图例、
坐标轴
、网格线、
点
、线等;后介绍了R绘图函数:
散
点
图
、线图、箱线图、
散
点
图
矩阵、气泡图等。
《
Matlab
编程实例视频教程系列 31:
Matlab
作图与动画 ( 绘图 )》课件讲义
freexyn 编程实例视频教程系列 31
Matlab
作图 与动画 ( 绘图 ) 31.0 概述 1.主要内容 1.1 运用
Matlab
进行作图/数据可视化/动画 1.2 通过编程实例体会运用
Matlab
进行作图的思路 课程目录 31.1 plot基本用法 31.2 线型、标记和
颜色
31.3 标题、标签和图例 31.4 多图、子图和网格 31.5
双
y轴
图像 31.6 条形图 31.7 直方图 31.8 饼图 31.9 阶梯图、
散
点
图
、针状图 31.10 填充图、对数图、热图 31.11 函数绘图 31.12 极坐标绘图 31.13 坐标刻度和标签 31.14 极坐标刻度和标签 31.15 多边形绘图 31.16 曲面图汇总 31.17 三维图汇总 31.18 圆柱、球、椭圆 31.19 图像
颜色
31.20 等高线 31.21 向量图 31.22 图像注释、文本 31.23 线条 31.24 调整
坐标轴
范围、长度 32.25 调整可视化效果 31.26 坐标区对象和图形对象 31.27 动画(动态图像)
Matlab
绘图超级经典.PDF
Matlab
绘图超级经典
Matlab
绘图
Matlab
提供了大量的高层绘图函数,图形每一 部分的属性都是按缺省方式设置的,绘图即方便又 高效。 同时,
Matlab
还提供了底层绘图函数,通过对 图形对象属性的设置与操作,可以对图形的每一部 分进行控制。 (这种绘图方式常称为句柄绘图) 一、2d绘图 二、图形属性控制 三、3d绘图 一、2d绘图 • 1、绘制2d 图形的基本步骤 • 2、直角坐标系绘图:plot( ) • 3、对数坐标绘图:loglog( ), semilogx( ), ... • 4 、
双
y轴
绘图:plotyy( ) • 5、极坐标系绘图:polar( ) • 6、二维绘图函数汇总 1、绘制2d图形的基本步骤 如何画出 y =sin(x) 在 [0, 2*pi] 上的图像? 手工作图 1、找
点
:x=0, pi/6, pi/3, pi/2, 2*pi/3, 5*pi/6, … 2、计算函数值:y=sin(0), sin(pi/6), sin(pi/3), … 3、描
点
:在坐标系
中画
出这 些离散
点
4、用直线或曲线连接这些
点
, 得到函数的大致图形
Matlab
作图的基本步骤 1、准备绘图数据: x=[0:pi/10:2*pi] y=sin(x) 2、调用绘图函数作出图形, 如:plot(x,y) 3、调用相关函数和命令调整图 形特性,如: grid on axis([-1,8,-2,2]) 注意:准备
matlab
绘图数据时,数据应进行排序。 x = [0,4/3,1,1/2,1/3,2/3,1/6,1,5/6,4/3,7/6,5/3,3/2,2,11/6] 1 x = x*pi 0.8 0.6 y = sin(x) 0.4 0.2 plot(x,y) 0 -0.2 -0.4
其他开发语言
3,424
社区成员
15,635
社区内容
发帖
与我相关
我的任务
其他开发语言
其他开发语言 其他开发语言
复制链接
扫一扫
分享
社区描述
其他开发语言 其他开发语言
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章