做过基因测序和生物信息学分析,尤其是做过RNAseq分析的同学都知道,R语言中有一款数据可视化神器ggplot2,其绘图功能强大,但它的缺陷是不能直接绘制3D图形,需要加载扩展包,很麻烦。

如果用Python语言,matplotlib只需要几行代码就能画出漂亮的3D图形,要啥有啥,不信往下看:

3D线型图

代码如下:

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)

y = np.sin(x)

z = np.cos(x)

fig = plt.figure()

ax = Axes3D(fig)

ax.plot(x, y, z)

plt.show()

3D曲面图

代码如下:

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()

ax = Axes3D(fig)

X = np.arange(-2, 2, 0.1)

Y = np.arange(-2, 2, 0.1)

X, Y = np.meshgrid(X, Y)

Z = np.sqrt(X ** 2 + Y ** 2)

ax.plot_surface(X, Y, Z, cmap=plt.cm.winter)

plt.show()

3D散点图

代码如下:

import numpy as np

x = np.random.normal(0, 1, 100)

y = np.random.normal(0, 1, 100)

z = np.random.normal(0, 1, 100)

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

fig = plt.figure()

ax = Axes3D(fig)

ax.scatter(x, y, z)

plt.show()

3D混合图

代码如下:

from mpl_toolkits.mplot3d import Axes3D

import numpy as np

import matplotlib.pyplot as plt

fig = plt.figure()

ax = Axes3D(fig)

x1 = np.linspace(-3 * np.pi, 3 * np.pi, 500)

y1 = np.sin(x1)

ax.plot(x1, y1, zs=0, c='red')

x2 = np.random.normal(0, 1, 100)

y2 = np.random.normal(0, 1, 100)

z2 = np.random.normal(0, 1, 100)

ax.scatter(x2, y2, z2)

plt.show()

3D子图

代码如下:

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

import numpy as np

fig = plt.figure()

ax1 = fig.add_subplot(1, 2, 1, projection='3d')

x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)

y = np.sin(x)

z = np.cos(x)

ax1.plot(x, y, z)

ax2 = fig.add_subplot(1, 2, 2, projection='3d')

X = np.arange(-2, 2, 0.1)

Y = np.arange(-2, 2, 0.1)

X, Y = np.meshgrid(X, Y)

Z = np.sqrt(X ** 2 + Y ** 2)

ax2.plot_surface(X, Y, Z, cmap=plt.cm.winter)

plt.show()

3D柱状图

代码如下:

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

import numpy as np

fig = plt.figure()

ax = Axes3D(fig)

x = [0, 1, 2, 3, 4, 5, 6]

for i in x:

y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

z = abs(np.random.normal(1, 10, 10))

ax.bar(y, z, i, zdir='y', color=['r', 'g', 'b', 'y'])

plt.show()

小结

Python语言简洁而优雅,不仅绘图功能强大,还是目前最火的人工智能用到最多的语言。画图的例子还有很多,上面每个图还可进一步精雕细凿,调整颜色和饱和度,精致到艺术品水平,自己试试就知道了。

python r语言 作图_生物医学绘图,Python 并不比R语言差相关推荐

  1. spss与python和sql区别_数据分析中的Excel、R、Python、SPSS、SAS和SQL

    作为一直想入门数据分析的童鞋们来说,如何选定一门面向数据分析的编程语言或工具呢?注意是数据分析,而不是大数据哦,数据分析是基础了. 数据分析的工具千万种,综合起来万变不离其宗.无非是数据获取.数据存储 ...

  2. python代码做图_如何用Python代码制作图

    Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的.大型项目的开发. 图是一 ...

  3. 爬虫python和c语言区别_爬虫概述 - Python教程 - C语言网

    网络爬虫(又称为网页蜘蛛,网络机器人,更经常的称为网页追逐者),它按照一定的规则自动地抓取网络信息. 1. 产生背景 随着时代的进步,互联网上拥有大量的信息,但是我们该如何高效的获取这些信息成为了一个 ...

  4. python如何用c语言表示_如何在python中调用C语言代码

    原博文 2019-04-03 14:19 − 1.使用C扩展CPython还为开发者实现了一个有趣的特性,使用Python可以轻松调用C代码 开发者有三种方法可以在自己的Python代码中来调用C编写 ...

  5. 如何用python进行相关性分析_如何利用python进行时间序列分析

    题记:毕业一年多天天coding,好久没写paper了.在这动荡的日子里,也希望写点东西让自己静一静.恰好前段时间用python做了一点时间序列方面的东西,有一丁点心得体会想和大家分享下.在此也要特别 ...

  6. python数据科学手册_小白入门Python数据科学

    前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...

  7. python爬虫获取方法_小白学python爬虫:2.获得数据

    在上一篇文章我我们已经完成了对网页的分析,包括了:在源码中数据的定位:获取方法(xpath).那么在获得数据之前我们考虑的则是如何获取源码. 接下来我们将学习如何从服务器获得源码. #写在前面&quo ...

  8. python金融量化书籍_超强干货 | Python金融数据量化分析教程+机器学习电子书

    如今Python语言的学习已经上升到了国家战略的层面上.Python语言是人工智能的基础语言,国家相关教育部门对于"人工智能普及"格外重视,不仅将Python列入到小学.中学和高中 ...

  9. 学习python最好的书籍_最好的Python书籍

    学习python最好的书籍 Python is an amazing programming language. It can be applied to almost any programming ...

最新文章

  1. 2017 ACM/ICPC 南宁赛区小结 By JSB @ Reconquista
  2. linux下创建新用户以及删除
  3. Vue项目碰到‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件报错...
  4. 文巾解题 1433. 检查一个字符串是否可以打破另一个字符串
  5. c++ map用法_Pandas数据处理三板斧——map、apply、applymap详解
  6. linux中进程的控制总结,Linux中的进程控制
  7. maven 插件未找到_防止在多模块Maven中找到“未找到插件”
  8. resteasy_RESTEasy教程第1部分:基础
  9. 解决:Could not find or load main class org.apache.rocketmq.example.quickstart.Producer
  10. PL/SQL程序设计以及安全管理实验遇到的问题及解决
  11. [Spark] - HashPartitioner RangePartitioner 区别
  12. 离线安装 Android 4.0 SDK
  13. Kubernetes学习之路目录
  14. smart原则_人生工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则
  15. 【20保研】四川大学计算机学院(软件学院)2019年全国优秀大学生暑期夏令营招生简章...
  16. 免费的端口映射工具哪个好用
  17. 本地组策略编辑器计算机配置,打开本地组策略编辑器|没有本地组策略编辑器...
  18. python二元一次方程组用鸡兔同笼的思路来写编程_二元一次方程组应用 —鸡兔同笼...
  19. 什么是知识库,怎么制作知识库?
  20. 关于自己配置电脑的一点心得

热门文章

  1. ORA-32004问题解决
  2. javascript indexOf函数
  3. linux的常用操作——lftp、nfs、ssh和scp
  4. 计算机系统结构 期末复习
  5. 命令行调用VS编译器
  6. 10.Mysql数据库导入导出和授权
  7. Scrapy-Item Loaders(项目加载器)
  8. Effective Java~38. 用接口模拟可扩展的enum
  9. 掌控谈话~谈价格的秘诀
  10. pcb布线拐角处打地孔_PCB线路板布线的10个重要规则——公众号【深圳LED网】