由于写论文,使用了mathematica软件,从入门到写作,着实费了很多功夫,总结下自己遇到的问题,以后便于查看。

一 首先是书写函数问题

函数和MATLAB不一样,使用方括号"[]",而不是圆括号。
在进行求指数问题时,我总是会写成Exp()的形式,结果解出来的结果却还有Exp,我当时很纳闷,才明白过来。这点让我半天的代码白费了,这个和画图关系不大,可以暂时略过。

二 画图多个图怎么放在一个画布里以及散点图的问题

这个很简单,使用一个简单的函数就解决了。可以看例子:

Show[Plot[x^2, {x, 0, 3.5}], Plot[x^3, {x, 0, 3.5}]]

这里面使用了两个Plot函数,画两个图,然后放在show函数里面就可以了。当然也可以拆开写成如下形式:

p1=Plot[x^2, {x, 0, 3.5}];
p2=Plot[x^3, {x, 0, 3.5}];
Show[p1,p2]

两者的效果是一样的,其中 {x, 0, 3.5}表示坐标x的取值范围在0-3.5之间,我们输出的图片如下图所示。

如果想画散点图,则也可以和散点图组合,组合的方式如下:

Show[Plot[x^2, {x, 0, 3.5}], Plot[x^3, {x, 0, 3.5}], ListPlot[{1, 4, 9}]]


ListPlot[{1, 4, 9}]就是所要的散点图,但是这里默认的1,4,9三个值的坐标是(1,1),(2,4),(3,9),如果自己想重新定义坐标轴,不按照默认的来,则需要这样定义:

data = {{1, 2}, {2, 4}, {2, 6}};
ListPlot[data, PlotStyle -> {Red, PointSize[Large]}]

代码中data就是定义的坐标集,得出来的结果就是对应的坐标,结果如下图所示,为了明显我把坐标描红表示, PlotStyle -> {Red, PointSize[Large]}是我设计的显示样式,为红色大圆点。

这个是组合图的基本画法以及散点图的个性化画法

三 如何设置坐标轴的范围

我们常常需要根据自己的要求设计x轴和y轴的范围,而mathmatica往往不会随着你的心思走,所以自己也可以调,主要为下:

p = x^2 + Sin[x] - 4;
Plot[p, {x, 0, 10}, PlotRange -> {0, 50}]

在上述代码中, {x, 0, 10}定义了x的取值范围, PlotRange -> {0, 50}定义了y的取值范围,则画图如下:

四 美化问题:线型、坐标轴比例、标签

1 线型问题
线型主要考虑线的颜色、粗细还有线的样式,这里都需要样式的问题,我直接上代码,可以慢慢体会:

p1 = x*2 - 10;
p2 = x + 2 - 10;
p3 = x^2 - 10;
p4 = x^3 - 10;
p5 = x^4 - 4;
b1 = Plot[p1, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Black, Thin}];
b2 = Plot[p2, {x, 0, 50}, PlotRange -> {-3, 50},  PlotStyle -> {Blue, Dotted}];
b3 = Plot[p3, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Red, DotDashed}];
b4 = Plot[p4, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Green, Thick}];
b5 = Plot[p5, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Orange, Dashed}];
Show[b1, b2, b3, b4, b5]

代码里我设置了五个函数,然后放在show函数里一起展示他们的图像,其中PlotStyle -> {Black, Thin}里的两个参数分别定义了线的颜色和线的类型,可以看一下具体的效果:

2 坐标轴比例问题
mathematica默认的坐标轴是扥比例的,如果不是的话,会根据取值范围调,当然如果自己不满意,也可以自己亲自去调,代码很简单如下:

SetOptions[Plot, AspectRatio -> 4]
Plot[2 Sin[x], {x, 0, 10}]

在代码中SetOptions[Plot, AspectRatio -> 4]可以绘制宽高比,AspectRatio -> 4即为宽高比,我们看一下更改比例后的图片如何:

这里显示的是有些夸张了,是为了更加明显表达比例的使用。
3 标签
标签涉及到的问题有:

  • 坐标轴:x,y标签的大小问题,以及位置放置问题
  • 坐标轴刻度:刻度值大小、颜色的问题

首先把mathmatica的x,y轴位置放置、坐标轴刻度的问题放在一起讲,看代码:

Plot[3 Sin[x], {x, 0, 10},AxesLabel -> {x, y},
AxesStyle -> Directive[Gray, FontSize -> 30],
TicksStyle -> Orange]

这里为了好理解,分段写了一下,AxesLabel -> {x, y}, 定义了坐标轴的标签名分别是x和y,当然自己也可以改,改成人数和成本,时间和效用都是可以的。
AxesStyle -> Directive[Gray, FontSize -> 30],定义了坐标轴标签的颜色和字体大小
TicksStyle -> Orange这里定义了坐标刻度的颜色,我们可以看一下结果:

当然有时候如果我们坐标的标签非常的长,我们不希望坐标轴标签放在坐标的两端,而是居中的位置,把坐标轴标签居中放置,需要使用到Frame的知识,但是使用它的时候,标签内部好像就不能显示了,这个我是亲身尝试过的,在这里整体演示一遍代码如下:

Plot[Sin[x], {x, 0, 10},Frame -> {{True, False}, {True, False}}, FrameLabel -> {x, y},LabelStyle -> Directive[Red, Bold, 30]]

代码中定义了Frame和FrameLable两个变量,他们两个可以算是共生关系。
为何这么说呢,Frame意为边框,实则在定义的时候上下左右像相框一样把图形包起来,如果你不想要哪个相框,你就把它定义为False,在这里 {{True, False}, {True, False}}分别指{{下真,上假},{左真,右假}},所以是正常的x轴和y轴都有显示,而x,y就对应的是边框标签的值,这个标签和坐标轴标签不是一个意思,要区分开。显示的结果如下所示:

这里可以看到只有左边和下边有边框,上边和下边没有边框,边框分别显示了x和y的字样,是我们定义的。
也可以看一下如果四个框都显示出来的效果,先写代码:

Plot[Sin[x], {x, 0, 10}, Frame -> {{True, True}, {True, True}}, FrameLabel -> {x, y}, LabelStyle -> Directive[Red, Bold, 30]]


可以看出来是有点小丑。

五 图例问题

画图时,如果遇到多条曲线相交的时候,每条图像的出现往往会让读者产生疑惑,此时需要对每一条加以解释,这时候需要加图例。加图例的代码也很简单,如下代码;

p1 = x*2 - 10;
p2 = x + 2 - 10;
p3 = x^2 - 10;
p4 = x^3 - 10;
p5 = x^4 - 4;
a1 = Plot[p1, {x, 0, 50}, PlotRange -> {-3, 50},  PlotStyle -> {Gray, Thin}, PlotLegends -> {"ONE"}];
a2 = Plot[p2, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Gray, Dotted}, PlotLegends -> {"two"}];
a3 = Plot[p3, {x, 0, 50}, PlotRange -> {-3, 50},  PlotStyle -> {Gray, DotDashed}, PlotLegends -> {"three"}];
a4 = Plot[p4, {x, 0, 50}, PlotRange -> {-3, 50},  PlotStyle -> {Gray, Thick}, PlotLegends -> {"four"}];
a5 = Plot[p5, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Gray, Dashed}, PlotLegends -> {"five"}];
Show[a1, a2, a3, a4, a5, AxesLabel -> {"time", "usage"}, TicksStyle -> Directive[Black, 12]]

在这里 PlotLegends -> {“five”}定义的就是图例,图例里面的字符串就是要说明的内容,我们看一下结果图:

在右方可以看到对每一条线都出现了解释,图例就生成了。
然而在生成图例的时候,mathematica默认图例不和图形在一起,就是如果输出为图片的话,图例是分开的部分,不会输出,这时候就需要把图例变成图像的一部分,我们需要进行如下的操作:

p1 = x*2 - 10;
p2 = x + 2 - 10;
p3 = x^2 - 10;
p4 = x^3 - 10;
p5 = x^4 - 4;
a1 = Plot[p1, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Gray, Thin}, PlotLegends -> Placed[{"ONE"}, Riffle]];
a2 = Plot[p2, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Gray, Dotted},  PlotLegends -> Placed[{"TWO"}, Riffle]];
a3 = Plot[p3, {x, 0, 50}, PlotRange -> {-3, 50},  PlotStyle -> {Gray, DotDashed},PlotLegends -> Placed[{"three"}, Riffle]];
a4 = Plot[p4, {x, 0, 50}, PlotRange -> {-3, 50}, PlotStyle -> {Gray, Thick},  PlotLegends -> Placed[{"four"}, Riffle]];
a5 = Plot[p5, {x, 0, 50}, PlotRange -> {-3, 50},
PlotStyle -> {Gray, Dashed},  PlotLegends -> Placed[{"five"}, Riffle]];
Show[a1, a2, a3, a4, a5, AxesLabel -> {"time", "usage"}, TicksStyle -> Directive[Black, 12]]


可以看到此时图例跑到图的里面去了,而代码只是在PlotLegends 后面使用了Placed函数,这个函数可以设置图例的放置方式,Riffle是指交互插入,如果设置成Top、Center、Right、Left也是可以的,这时好像就不是在图形里面了,可以自己尝试一下。

六 分段函数

这个比较简单,和MATLAB很像,所以直接上代码,可以自己慢慢体会。

y = If[x >= 0, x - 1, x^2];
Plot[y, {x, -5, 5}]

对应的图形为:

当然也可以使用多个If语句进行嵌套,这个就很容易了。
暂时就说这么多吧,希望对读者也有帮助吧。

Mathematica画图的问题相关推荐

  1. Mathematica 画图操作中的一些小惊喜

    Mathematica 中的画图操作中的一些小惊喜 ListPlot(绘制点集) 一般可与 Joined(连接点) 操作一起使用,可得到将绘出的点连起来的曲线,如下: ListPlot[{Table[ ...

  2. Mathematica画图函数命令大全

    二维作图 Plot[f,{x,xmin,xmax}] 一维函数f[x]在区间[xmin,xmax]上的函数曲线 Plot[,f2.{f1.},{x,xmin,xmax}] 在一张图上画几条曲线 Lis ...

  3. Mathematica学习(2)-mathematica命令

    转自:http://blog.sina.com.cn/s/blog_5e0430b20101de8j.html Mathematica的内部常数             Pi , 或 π(从基本输入工 ...

  4. Mathematica 命令大全

          Mathematica的内部常数 Pi , 或 π(从基本输入工具栏输入, 或"Esc"+"p"+"Esc") 圆周率 π E  ...

  5. Mathematica note

    清理工作空间中所有变量 Clear["Global`*"]; 找最大值.最小值 FindMaximum.FindMinimum Substitution rule: The sub ...

  6. mathematica使用笔记

    一些使用笔记: 1.快捷键与常用操作: shift+enter 计算当前行 结果复制为mathML可以直接粘贴到word里面 Clear["`*"]清除原有的所有变量 (**)注释 ...

  7. 如何在论文中画出漂亮的插图?

    GITHUB, 开源包d3.数据可视化利器.http://ghv.artzub.com/#repo=d3&climit=100&user=mbostock&run 知乎精选: ...

  8. 类指数级数(指数积分函数的变体)数值计算算法的C++实现

    文章目录 前言 HskEta函数 HskKsi函数 广义HskEta函数 定义式 主项分析 余项分析 前言 由于毕设的数学推导中涉及了 ∑ n = 1 ∞ x n n ! × n \sum_{n=1} ...

  9. Chango的数学Shader世界(八)光盘模拟-各向异性,光栅衍射

    目的: 参考<GPU Gems>,在UE4中尝试以重现光盘Shader,并对书中的方法进行解析,改进,批评. 参考: <GPU Gems> 观察: 我越来越意识到观察现实的重要 ...

最新文章

  1. java程序解压/压缩.gz文件
  2. 关于ATL生成COM注册失败解决方法
  3. python使用字典格式化字符串-Python字符串格式方式 %s format()
  4. 前端工程化(一)---工程目录搭建
  5. Powerful array CodeForces - 86D (莫队算法)
  6. java反射机制的简单使用和优缺点
  7. 查看本地oracle密码是多少钱,Oracle 本地验证和密码文件
  8. python实操训练300题_如何练习python?有这五个游戏,实操经验就已经够了
  9. 邬贺铨/余晓晖/田溯宁…千家从业者,数十位行业大咖共同烹制了一场怎样的AIoT“盛宴”?
  10. Web 2.0理念在产品应用中的借鉴之处
  11. 计算机工作记录,电脑上可以记录每日工作内容的办公便签是什么?
  12. Python实现求众数的三种方法
  13. 基于SiC集成技术的生物电信号采集方案
  14. html关于图片缓慢放大
  15. 数学建模----LaTex排版使用速成
  16. 面试AI算法岗,你被要求复现顶会论文了嘛?
  17. 达梦数据库恢复到指定时间点
  18. MathType在Word中功能异常的解决办法汇总(持续更新)
  19. SCO UNIX 讲座
  20. 入职体检时为什么要检查血常规

热门文章

  1. 数据库系统概述---第二章关系数据库
  2. 2019年安徽大学ACM/ICPC实验室新生赛题解
  3. 微信小程序 生成UUID
  4. 电脑连不上网,浏览器网页打不开,但qq微信能发消息
  5. 用例图、活动图、时序图、类图的详细介绍
  6. 恢复出厂设置和格式化SD卡
  7. 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
  8. Metal每日分享,调整胶片颗粒感滤镜效果
  9. Node模块引入与加载机制
  10. u盘只有盘符没有容量打不开-U盘无法识别,无法格式化