机器学习-数据可视化神器matplotlib学习之路(三)

之前学习了一些通用的画图方法和技巧,这次就学一下其它各种不同类型的图。好了先从散点图开始,上代码:

from matplotlib import pyplot as plt
import numpy as np

n = 1024 #生成1024个点
x = np.random.normal(0, 1, n) #正态分布x坐标,均值0标准差1
y = np.random.normal(0, 1, n) #正态分布y坐标,均值0标准差1
color = np.arctan2(y, x) #这个用于渲染好看的颜色,自己琢磨意义,哈哈
plt.scatter(x, #x坐标
            y, #y坐标
            s=50, #点的大小
            c=color, #颜色
            alpha=0.5, #透明度
            cmap='magma' #颜色板,看文档或者源码有很多类型,自己可以试试,如summer、winter、pink
            )
plt.show()

散点图还是比较简单,关于一些常用设置,如坐标、图例、文字等可以看我之前的学习文章,还有就是很多参数这些看看api或者源码都能搞懂的。

接下来是简单用一下条形图:

from matplotlib import pyplot as plt
import numpy as np

n = 12
x = np.arange(12) #12个条形
y1 = np.random.uniform(1, 10, n) #分布1-10的高度
y2 = -np.random.uniform(1, 10, n) #分布(-1)-(-10)的高度
plt.bar(x, y1)
plt.bar(x, y2)

#接下来在条形上下方加上数值
for x0,y0 in zip(x, y1):
    plt.text(x0,
             y0,
             '%.2f' % y0, #保留两位小数
             ha='center', #水平对齐方式
             va='bottom' #垂直对齐方式
             )

for x0, y0 in zip(x, y2):
    plt.text(x0,
             y0,
             '%.2f' % y0,  # 保留两位小数
             ha='center',  # 水平对齐方式
             va='top'  # 垂直对齐方式
             )
plt.show()

好了,一个双层的条形图就完成了。其它还有什么饼图、直方图、等高线图等待很多,就不一一写出来了,接下来再弄一弄在一个figure显示多个图吧

其实很简单了,这里要用到subplot(n,m,d)将图分成n行m列,添加地d个格子的图像,接下来偷懒了,就用上面两个例子放一起就好了

from matplotlib import pyplot as plt
import numpy as np

plt.figure(num=1, figsize=(12, 6))#设置figure属性,因为要放两张图,这里把宽度弄大点
plt.subplot(1, 2, 1)#1行2列第一个格子ax画图
n = 12
x = np.arange(12) #12个条形
y1 = np.random.uniform(1, 10, n) #分布1-10的高度
y2 = -np.random.uniform(1, 10, n) #分布(-1)-(-10)的高度
plt.bar(x, y1)
plt.bar(x, y2)

#接下来在条形上下方加上数值
for x0,y0 in zip(x, y1):
    plt.text(x0,
             y0,
             '%.2f' % y0, #保留两位小数
             ha='center', #水平对齐方式
             va='bottom' #垂直对齐方式
             )

for x0, y0 in zip(x, y2):
    plt.text(x0,
             y0,
             '%.2f' % y0,  # 保留两位小数
             ha='center',  # 水平对齐方式
             va='top'  # 垂直对齐方式
             )
#到这里都是第一个ax格子的图像

plt.subplot(1, 2, 2)#开始在的二个ax画图
n = 1024 #生成1024个点
x = np.random.normal(0, 1, n) #正态分布x坐标,在0-1范围
y = np.random.normal(0, 1, n) #正态分布y坐标,在0-1范围
color = np.arctan2(y, x) #这个用于渲染好看的颜色,自己琢磨意义,哈哈
plt.scatter(x, #x坐标
            y, #y坐标
            s=50, #点的大小
            c=color, #颜色
            alpha=0.5, #透明度
            cmap='magma' #颜色板,看文档或者源码有很多类型,自己可以试试,如summer、winter、pink
            )
plt.show()

plt.figure()里面还有很多属性,比如背景颜色板,x和y轴是否共享坐标等等,自己看api和源码吧。哈哈,今天就到这儿。

原文地址:https://www.cnblogs.com/yifengjianbai/p/10259848.html