首页 > 智能 > 内容

刘蕾作图用什么软件比较好?

发布时间:2020-11-26   来源:未知    
字号:

  需要同时画数据和参考函数,出版物质量的。

  例如这样的图:

  linux系统的话简单的图用xmgrace或者gnuplot,全免费,正规学术出版物质量。

  会python就用matplotlib吧,会R可以用ggplot,有钱的话买mathematica,最简单的就是xmgrace和gnuplot,用好了也很强大

  Python的一个数据分析库bokeh,绘图功能超级强大,高能预警,手机流量党速速退散,以下图片均来自bokeh网站Welcome to Bokeh

  散点图:

  也可以是流线图,饼图

  洛伦兹曲线还可以这样

  也可以这样

  还有元素周期表还有xkcd股票时间序列

  科学论文图表首先要规矩,符合期刊的投稿要求,然后在规矩的基础上实现图表的美观和专业。在当前贯彻科技论文规范化、标准化的同时,图表的设计也应规范化、标准化。所以,科学论文图表的制作原则主要是规矩、简单、美观和专业。我们来看看不同软件绘制的效果图:

  最后,我想说,有一款平凡的软件能绘制这些软件图像的效果,但又不需要编程基础就能实现,它就是众所周知的 Excel。Excel才是王道!下图就是使用Excel仿制的Python、Matlab、R绘制的散点效果图,几乎没有差异。

  对于科学图表,大部分国内的期刊杂志要求黑白的论文图表;而国外大部分的期刊杂志允许彩色的图表。科学论文图表基本是按照《Author Guidelines》的要求来制作的,最大的区别在于色彩,优秀的图表配色能够给人一种赏心悦目的感觉,更能激起读者对文章内容的兴趣。

  我们觉得R语言中ggplot2绘图精美的一个重要原因就是它清新亮丽的灰色背景配上赏心悦目的数据系列颜色。它的配色确实让很多软件都汗颜啊,所以Python语言在matplotlib包的基础上设计了prettyplotlib

  和seaborn包,专门用来仿制ggplot的绘图风格。Matlab也不敢落后,在Matlab

  2014版上对绘图配色方面作了很大的改进。

  表1-3-1 显示了R语言ggplot2包、Tableau软件、Python语言seaborn包、D3.js中的部分常用配色方案。我觉得赏心悦目的配色方案远远不止这些,但是我觉得我们只要掌握并熟练运用1到2种完美的配色方案,就已经能满足平常的论文绘图需求。

  使用Excel默认颜色绘制的系列图表如图1-3-4所示。根据1.3.1的Excel颜色修改方法,利用R ggplot2 Ste1、Set2和Tableau 10 Medium 配色方案对图1-3-4的颜色进行修改调整后的效果,分别如图1-3-5、 1-3-6和1-3-7所示。通过对比发现,ggplot2和Tableau的颜色方案确实不错!(6以下图表都是使用Excel绘制)

  更多消息可以关注我们的知乎专栏:

  Excel数据之美:科学与商业图表绘制指南:Excel数据之美:科学与商业图表绘制指南 - 知乎专栏

  R语言数据分析与可视化:R语言数据分析与可视化 - 知乎专栏

  另外,我很不要脸地把我的书推荐给大家:

  python作图还不错,比如最最基本的matplotlib库,我们介绍在数据分析中使用非常高频的几种图的形式。

  首先说散点图,散点图和线形图最大的区别,顾名思义就是这种图形不再由线段进行连接,而是由一个一个独立的点、圆圈或者其他指定的形状构成:

  import numpy as np

  import matplotlib.pyplot as plt

  x=np.linspace(0,10,100)

  plt.scatter(x, np.sin(x), marker=o)

  plt.grid()

  plt.show()

  实质上,使用plt.sactter相比plt.plot在创建散点图时的优势是具有更高的灵活性,他可以单独控制每一个散点的不同属性(颜色、大小等),这样就可以通过(坐标位置、颜色、大小)这些多维信息,来表征更多的数据特征,并进行更精细的控制。

  我们来绘制这样一组散点图,每个点的位置坐标(x,y)是服从标准正态分布的随机值,点的颜色灰度值是位于(0,1)空间中的随机样本,点的大小是随机值得1000倍,单位是像素。这样通过位置、大小、颜色等多维信息,就能更丰富的表现出散点数据背后所蕴含的多重信息了。

  import numpy as np

  import matplotlib.pyplot as plt

  rng=np.random.RandomState(0)

  x=rng.randn(100)

  y=rng.randn(100)

  colors=rng.rand(100)

  sizes=1000 * rng.rand(100)

  plt.scatter(x,y,c=colors,s=sizes,alpha=0.3)

  plt.colorbar()

  plt.grid(True)

  plt.show()

  从图中,我们可以直观看出散点的大小所对应的数量信息,右侧添加的颜色条,同来指示颜色所对应的数值信息。这类多颜色与多特征的散点图在探索与演示数据时非常有用。

  第二类我们要说的图形类型是频次直方图。

  我们先画一个最简单的频次直方图,生成1000个服从标准正态分布的随机变量,然后观察他们在每个点的出现次数。

  import numpy as np

  import matplotlib.pyplot as plt

  data=np.random.randn(1000)

  ret=plt.hist(data)

  print(ret)

  plt.show()

  (array([ 15., 39., 88., 188., 216., 200., 123., 84., 36., 11.]),

  array([-2.68292233, -2.1248507 , -1.56677908, -1.00870746, -0.45063583,

  0.10743579, 0.66550742, 1.22357904, 1.78165067, 2.33972229,

  2.89779391]), )最简单的频次直方图

  仔细琢磨一下其实会有一些疑问,这个图里面只有10个数据条,但是很显然1000个随机变量的取值显然不止10个。在默认情况下,hist函数会将所有的随机变量取值划分为10个取值范围,然后统计每个取值范围内的变量数,并绘就此图。

  我们可以从程序结果看出,hist函数是有返回值的,返回的是一个2元元组,元组第一个ndarray对象是数据条的高度序列,元组第二个ndarray对象是每个数据条的边缘横坐标。

  其实如果我们只想得到上述返回数据,而并不想画图,那么可以用下面的方法即可。

  import numpy as np

  import matplotlib.pyplot as plt

  data=np.random.randn(1000)

  ret=np.histogram(data)

  print(ret)

  plt.show()

  (array([ 11, 36, 81, 179, 216, 209, 164, 71, 27, 6], dtype=int64),

  array([-2.83330638, -2.25443586, -1.67556534, -1.09669482, -0.5178243 ,

  0.06104622, 0.63991674, 1.21878726, 1.79765778, 2.3765283 ,

  2.95539882]))

  那么我们可以通过指定hist函数中的一些参数,来个性化的调整频次直方图的显示效果。

  通过bins参数可以指定数据条的个数;normed可以指定是否将频数进行标准化,alpha指定透明度;还有histtype、color、edgecolor等线性、颜色等参数

  import numpy as np

  import matplotlib.pyplot as plt

  data=np.random.randn(1000)

  plt.hist(data, bins=40, normed=True, alpha=0.5,

  histtype=stepfilled,color=steelblue)

  plt.grid(True)

  plt.show()指定参数的频直方图次

  结合频次直方图中的透明度这个参数,我们再来多做做文章,比如,刘蕾我们想对不同均值、方差分布特征的正态分布随机变量进行对比,那该怎么做?显然我们想到的是把不同的几个正态分布图画在一张图里进行比较。

  import numpy as np

  import matplotlib.pyplot as plt

  data1=np.random.normal(0, 0.8, 1000)

  data2=np.random.normal(-2, 1, 1000)

  data3=np.random.normal(3, 2, 1000)

  plt.grid(True)

  kwargs=dict(histtype=stepfilled, alpha=0.5, normed=True, bins=40)

  plt.hist(data1, **kwargs)

  plt.hist(data2, **kwargs)

  plt.hist(data3, **kwargs)

  plt.show()

  最后我们来介绍基本误差线图

  我们在图上画50个散点,然后每个点的误差设定为一个随机值,满足标准正态分布。同时作为对照,我们在另一个图中设置每个点的误差值为一个标量常数而非随机数组。当然这个例子可能没有什么物理意义,只是来演示一下这种图怎么画

  import numpy as np

  import matplotlib.pyplot as plt

  x=np.linspace(0, 10, 50)

  dy=np.random.normal(0, 1, 50)

  y=np.sin(x) + dy*np.random.randn(50)

  plt.subplot(211)

  plt.errorbar(x, y, yerr=dy, fmt=.k)

  plt.grid(True)

  plt.subplot(212)

  plt.errorbar(x, y, yerr=0.8, fmt=o)

  plt.grid(True)

  plt.show()

  关于数据科学更系统、更深入的探讨可进入我们的专栏《Python数据科学之路》:

  酱油哥:来吧,一起踏上Python数据科学之路

  本专栏模仿美剧剧集编排分为五季,第一季:Python编程语言核心基础、第二季:Python数据分析基本工具、第三季:Python语言描述的数学基础、第四季:机器学习典型算法专题、第五季:实战热点深度应用。

×
织梦二维码生成器
时尚女人
育儿知识
生活百科
减肥方法