Python数据可视化实例之绘制图表

发表于:2021-2-20 09:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:虫虫搜奇    来源:百度

#
Python
  得利于语言的简单明了、丰富的数据结构、丰富的类和模块,Python如今成了数据科学中的香饽饽,成了matlab、R语言之外又一强大的数据分析工具。抛开其他方面的、今天虫虫带大家一起来探索Python在数据可视化方面的应用。我们以最基本的几种图标为实例来介绍Python matplotlib的强大的作图能力。
  1.折线图
  在绘制折线图时,如果你的数据很小,图表的线条有点折,当你数据集比较大时候,比如超过100个点,则会呈现相对平滑的曲线。
  在这里,我们使用三个plt.plot绘制了,不同斜率(1,2和3)的三条线。
  import numpy as np
  import matplotlib.pyplot as plt
  cc= np.linspace(0,2,100)
  plt.rcParams['font.sans-serif'] = ['SimHei']
  plt.plot(cc,cc,label='linear')
  plt.plot(cc,cc**2,label='两倍')
  plt.plot(cc,cc**3,label='三倍')
  plt.xlabel('x label')
  plt.ylabel('y label')
  plt.title("折线图")
  plt.legend()
  plt.show()
  cc = np.linspace(0,2,100)
  plt.plot(cc,cc,label ='linear')
  plt.plot(cc,cc ** 2,label ='quadratic')
  plt.plot(cc,cc ** 3,label ='cubic')
  plt.xlabel('x label')
  plt.ylabel('y label')
  结果显示,如下:
  注意为了显示中文,我们plt.rcParams属性设置了中文字体,不然不能正确显示中文title的。
  2.散点图
  散点图和折线图的原理差不多;如果使用直线连接散点图中的点,得到的就是折线图。所以你只需要设置线型来绘制散点图。
  注意:次例中我们也画了三行。不同的地方时,只使用了一个plt.plot。
  mport numpy as np
  import matplotlib.pyplot as plt
  x = np.arange(0., 5., 0.2)
  plt.plot(x, x, 'r--', x, x**2, 'bs', x, x**3, 'g^')
  plt.show()
  图表显示结果为:

  3.直方图
  直方图也是一种常用的简单图表,本例中我们在同一张图片中绘制两个概率直方图。
  import numpy as np
  import matplotlib.pyplot as plt
  np.random.seed(19680801)
  mu1, sigma1 = 100, 15
  mu2, sigma2 = 80, 15
  x1 = mu1 + sigma1 * np.random.randn(10000)
  x2 = mu2 + sigma2 * np.random.randn(10000)
  n1, bins1, patches1 = plt.hist(x1, 50, density=True, facecolor='g', alpha=1)
  n2, bins2, patches2 = plt.hist(x2, 50, density=True, facecolor='r', alpha=0.2)
  plt.rcParams['font.sans-serif'] = ['SimHei']
  plt.xlabel('智商')
  plt.ylabel('置信度')
  plt.title('IQ直方图')
  plt.text(110, .025, r'$mu=100, sigma=15$')
  plt.text(50, .025, r'$mu=80, sigma=15$')
  # 设置坐标范围
  plt.axis([40, 160, 0, 0.03])
  plt.grid(True)
  plt.show()
  显示效果为:

  4.三维散点图
  import numpy as np
  import matplotlib.pyplot as plt
  from mpl_toolkits.mplot3d import Axes3D
  data = np.random.randint(0, 255, size=[40, 40, 40])
  x, y, z = data[0], data[1], data[2]
  ax = plt.subplot(111, projection='3d')
  ax.scatter(x[:10], y[:10], z[:10], c='y')
  ax.scatter(x[10:20], y[10:20], z[10:20], c='r')
  ax.scatter(x[30:40], y[30:40], z[30:40], c='g')
  ax.set_zlabel('Z')
  ax.set_ylabel('Y')
  ax.set_xlabel('X')
  plt.show()
  显示效果为:

  怎么样,效果很酷吧。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号