词条信息

admin
admin
超级管理员
词条创建者 发短消息   

相关词条

热门词条

更多>>
什么是端口?到底是做什么的呢?
端口一般指两种,一种是硬件比如路由器或者交换机的插网线的端口,一种是软件的逻辑的概念,比如http的80端口!...
7种进阶方法让你快速测试端口连通性
Ping是Windows、Linux和Unix系统下的一个检查网络连通性的命令工具,对于大部分互联网用户来说很...
电脑开机,总需要按F1,是什么原因造成的?
一.主板掉电这个说法是行业内的叫法了,一般是主板的CMOS电池没电了导致的。也是最常见的一种提示你按F1的提示...
社保降费对个人有什么影响?
下调城镇职工基本养老保险单位缴费比例是政府给企业发的一个大红包,特别是对于企业来说是一个利好,但是对个人来说有...
车辆“出险”对下年保费的影响,到底有多大?
【出险对交强险的影响】【出险对商业险的影响】车辆“出险”对下年保费的影响,到底有多大?这里有必要先提下车险第三...

精选图集

更多>>
简易百科旧版 >>所属分类 >> 程序开发    Python   

Python绘制六种可视化图表

标签: Python 可视化图表

顶[0] 发表评论(0) 编辑词条

可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的。对于初学者来说,很容易被这官网上众多的图表类型给吓着了,由于种类太多,几种图表的绘制方法很有可能会混淆起来。


因此,在这里,我特地总结了六种常见的基本图表类型,你可以通过对比学习,打下坚实的基础。


目录

01. 折线图编辑本段回目录


绘制折线图,如果你数据不是很多的话,画出来的图将是曲折状态,但一旦你的数据集大起来,比如下面我们的示例,有100个点,所以我们用肉眼看到的将是一条平滑的曲线。


这里我绘制三条线,只要执行三次 plt.plot 就可以了。


 import numpy as np

import matplotlib.pyplot as plt

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

plt.plot(x, x, label='linear')

plt.plot(x, x**2, label='quadratic')

plt.plot(x, x**3, label='cubic')

plt.xlabel('x label')

plt.ylabel('y label')

plt.title("Simple Plot")

plt.legend()

plt.show()


02. 散点图编辑本段回目录


其实散点图和折线图是一样的原理,将散点图里的点用线连接起来就是折线图了。所以绘制散点图,只要设置一下线型即可。


注意:这里我也绘制三条线,和上面不同的是,我只用一个 plt.plot 就可以了。


 import 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()


03. 直方图编辑本段回目录


直方图,大家也不算陌生了。这里小明加大难度,在一张图里,画出两个频度直方图。这应该在实际场景上也会遇到吧,因为这样真的很方便比较,有木有?


 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)

# the histogram of the data

# 50:将数据分成50组

# facecolor:颜色;alpha:透明度

# density:是密度而不是具体数值

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)

# n:概率值;bins:具体数值;patches:直方图对象。

plt.xlabel('Smarts')

plt.ylabel('Probability')

plt.title('Histogram of IQ')

plt.text(110, .025, r'$\mu=100,\ \sigma=15$')

plt.text(50, .025, r'$\mu=80,\ \sigma=15$')

# 设置x,y轴的具体范围

plt.axis([40, 160, 0, 0.03])

plt.grid(True)

plt.show()


04. 柱状图编辑本段回目录


同样的,简单的柱状图,我就不画了,这里画三种比较难的图。


4.1 并列柱状图

import numpy as np

import matplotlib.pyplot as plt

size = 5

a = np.random.random(size)

b = np.random.random(size)

c = np.random.random(size)

x = np.arange(size)

# 有多少个类型,只需更改n即可

total_width, n = 0.8, 3

width = total_width / n

# 重新拟定x的坐标

x = x - (total_width - width) / 2

# 这里使用的是偏移

plt.bar(x, a, width=width, label='a')

plt.bar(x + width, b, width=width, label='b')

plt.bar(x + 2 * width, c, width=width, label='c')

plt.legend()

plt.show()

 


4.2 叠加柱状图


 import numpy as np

import matplotlib.pyplot as plt

size = 5

a = np.random.random(size)

b = np.random.random(size)

c = np.random.random(size)

x = np.arange(size)

# 这里使用的是偏移

plt.bar(x, a, width=0.5, label='a',fc='r')

plt.bar(x, b, bottom=a, width=0.5, label='b', fc='g')

plt.bar(x, c, bottom=a+b, width=0.5, label='c', fc='b')

plt.ylim(0, 2.5)

plt.legend()

plt.grid(True)

plt.show()


05. 饼图编辑本段回目录


5.1 普通饼图


 import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'

sizes = [15, 30, 45, 10]

# 设置分离的距离,0表示不分离

explode = (0, 0.1, 0, 0)

plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',

 shadow=True, startangle=90)

# Equal aspect ratio 保证画出的图是正圆形

plt.axis('equal')

plt.show()



5.2 嵌套饼图


 import numpy as np

import matplotlib.pyplot as plt

# 设置每环的宽度

size = 0.3

vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

# 通过get_cmap随机获取颜色

cmap = plt.get_cmap("tab20c")

outer_colors = cmap(np.arange(3)*4)

inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10]))

print(vals.sum(axis=1))

# [92. 77. 39.]

plt.pie(vals.sum(axis=1), radius=1, colors=outer_colors,

 wedgeprops=dict(width=size, edgecolor='w'))

print(vals.flatten())

# [60. 32. 37. 40. 29. 10.]

plt.pie(vals.flatten(), radius=1-size, colors=inner_colors,

 wedgeprops=dict(width=size, edgecolor='w'))

# equal 使得为正圆

plt.axis('equal')

plt.show()



5.3 极轴饼图


要说酷炫,极轴饼图也是数一数二的了,这里肯定也要学一下。


 import numpy as np

import matplotlib.pyplot as plt

np.random.seed(19680801)

N = 10

theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)

radii = 10 * np.random.rand(N)

width = np.pi / 4 * np.random.rand(N)

ax = plt.subplot(111, projection='polar')

bars = ax.bar(theta, radii, width=width, bottom=0.0)

# left表示从哪开始,

# radii表示从中心点向边缘绘制的长度(半径)

# width表示末端的弧长

# 自定义颜色和不透明度

for r, bar in zip(radii, bars):

 bar.set_facecolor(plt.cm.viridis(r / 10.))

 bar.set_alpha(0.5)

plt.show()



06. 三维图编辑本段回目录


6.1 绘制三维散点图


 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()


6.2 绘制三维平面图


 from matplotlib import pyplot as plt

import numpy as np

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()

ax = Axes3D(fig)

X = np.arange(-4, 4, 0.25)

Y = np.arange(-4, 4, 0.25)

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

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

Z = np.sin(R)

# 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')

plt.show()




 

 

附件列表


按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

→我们致力于为广大网民解决所遇到的各种电脑技术问题
 如果您认为本词条还有待完善,请 编辑词条

上一篇2018 年最常见的 Python 面试题
下一篇Python爬虫环境常用库及安装

0
1. 本站部分内容来自互联网,如有任何版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
2. 本站内容仅供参考,如果您需要解决具体问题,建议您咨询相关领域专业人士。
3. 如果您没有找到需要的百科词条,您可以到百科问答提问或创建词条,等待高手解答。

关于本词条的提问

查看全部/我要提问>>