python数据可视化matplotlib(下)

标签: 数据可视化

python数据可视化matplotlib(下)

通过实例来学习matplotlib中的函数,我觉得是一种捷径,通过应用我们能够更好地去熟悉代码。

  • 上篇:基本图像绘制
  • 中篇:图像中内容的设置
  • 下篇:实战案例加额外的知识

实例

sin与cos

%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(-np.pi,np.pi,1000)
y1 = np.sin(x)
y2 = np.cos(x)

# fig, axes = plt.subplots()
fig = plt.figure()
axes = fig.add_subplot(1,1,1)

#绘制图像
axes.plot(x,y1,color = "r")
axes.plot(x,y2,color = 'b')


#绘制图例
axes.legend(['sin_function','cos_function','tan_function'])
#设置坐标轴显示刻度
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi], ('-Π','-Π/2','0','Π/2','Π'))
plt.yticks([-1,1], ('-1','1'))
#坐标轴标签
# plt.xlabel('x')
# plt.ylabel('y')

#隐藏顶部和右边的线
axes.spines['top'].set_color('none')
axes.spines['right'].set_color('none')

#移动坐标线至中央
axes.xaxis.set_ticks_position('bottom')
axes.spines['bottom'].set_position(('data', 0))
axes.yaxis.set_ticks_position('left')
axes.spines['left'].set_position(('data', 0))

#设置图片中坐标轴显示刻度
# plt.xlim([-4,4])
# plt.ylim([-1.1,1.1])

#做出两条标注线
t = 3*np.pi/4
axes.plot([t,t],[0,np.sin(t)],color = 'b',linestyle = '--')
axes.plot([t,t],[0,np.cos(t)],color = 'r',linestyle = '--')
axes.scatter([t,],[np.sin(t),], 50, color ='blue')#散点绘制
axes.scatter([t,],[np.cos(t),], 50, color ='red')

#加入箭头以及描述信息
axes.annotate(r"$y = sin(\frac{3\pi}{4})$",xy = (3/4*np.pi,np.sin(3/4*np.pi)),xytext=(3, 0.78),
              arrowprops=dict(facecolor='black', width=0.5, headwidth=5))
axes.annotate(r"$y = cos(\frac{3\pi}{4})$",xy = (3/4*np.pi,np.cos(3/4*np.pi)),xytext=(3, -0.78),
              arrowprops=dict(facecolor='black', width=0.5, headwidth=5))
plt.show()

输出:
在这里插入图片描述

分类突出饼图

labels='frogs','hogs','dogs','logs'#标签信息
sizes=15,20,45,10#每个类别的数据比例
colors='yellowgreen','gold','lightskyblue','lightcoral'#每个模块显示的颜色
explode=0,0.1,0,0 #对应的中心偏量,突出hogs的信息
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=60)#绘制饼图
plt.axis('equal')#绘制的样式
plt.show()

在这里插入图片描述

直方图

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

# 数据的直方图
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)

#添加横纵坐标轴说明
plt.xlabel('Smarts')
plt.ylabel('Probability')
#添加标题
plt.title('Histogram of IQ')
#添加文字
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')#请两个参数用于定位文本显示位置
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()

在这里插入图片描述

图中图

# 创建绘图数据
dt = 0.001
t = np.arange(0.0, 10.0, dt)
r = np.exp(-t[:1000]/0.05)               # impulse response
x = np.random.randn(len(t))
s = np.convolve(x, r)[:len(x)]*dt  # colored noise

# 绘制大的主要图像
plt.plot(t, s)
plt.axis([0, 1, 1.1*np.amin(s), 2*np.amax(s)])
plt.xlabel('time (s)')
plt.ylabel('current (nA)')
plt.title('Gaussian colored noise')

# 向主要图像中加入小的图像,axes传入的是坐标轴对应的显示位置
a = plt.axes([0.65, 0.6, 0.2, 0.2])
n, bins, patches = plt.hist(s, 400, normed=1)
plt.title('Probability')
plt.xticks([])
plt.yticks([])

# 向主要图像中加入小的图像,axes传入的是坐标轴对应的显示位置
a = plt.axes([0.2, 0.6, .2, .2])
plt.plot(t[:len(r)], r)
plt.title('Impulse response')
plt.xlim(0, 0.2)
plt.xticks([])
plt.yticks([])

plt.show()

在这里插入图片描述

特殊柱形图


n = 12
X = np.arange(n)
Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)
Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)

plt.figure(figsize=(12,8))
#plt.bar()画柱形图,两个这个函数分别巴特们花在了上下两侧
plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')

#为每一个柱标上标签
for x, y in zip(X, Y1):
    plt.text(x + 0.4, y + 0.05, '%.2f' % y, ha='center', va= 'bottom')

for x, y in zip(X, Y2):
    plt.text(x + 0.4, -y - 0.05, '%.2f' % y, ha='center', va= 'top')

plt.xlim(-.5, n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())
plt.show()

在这里插入图片描述

热力图

def f(x,y):
    return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2)

n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
X,Y = np.meshgrid(x, y)#这是个神奇的函数,需要留意

plt.figure(figsize=(10,6))

plt.contourf(X, Y, f(X, Y), 8, alpha=.75, cmap=plt.cm.hot)#填充等高线图,cmap表示隐射风格
C = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidth=.5)#画出等高线
plt.clabel(C, inline=1, fontsize=10)#画出等高线上的数字

plt.xticks(())
plt.yticks(())
plt.show()

在这里插入图片描述

3D图

%matplotlib inline
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)

ax.plot_surface(X,Y,Z, rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
ax.contourf(X,Y,Z,dir='z',offset=-2,cmap=plt.get_cmap('rainbow'))
ax.set_zlim(-2,2)
plt.show()

在这里插入图片描述
dir指定等高线图映射的方向,offset设置显示位置。这里推荐大家通过ipython运行一下,会有一个新的窗口,可以通过鼠标旋转这个图像哦。

雷达图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 显示中文
labels = np.array([u'总场次', u'吃鸡数', u'前十数',u'总击杀']) # 标签
dataLenth = 4  # 数据长度
data_radar = np.array([63, 1, 15, 13]) # 数据
angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)  # 分割圆周长
data_radar = np.concatenate((data_radar, [data_radar[0]]))  # 闭合
angles = np.concatenate((angles, [angles[0]]))  # 闭合
plt.polar(angles, data_radar, 'bo-', linewidth=1)  # 做极坐标系
plt.thetagrids(angles * 180/np.pi, labels)  # 做标签
plt.fill(angles, data_radar, facecolor='r', alpha=0.25)# 填充
plt.ylim(0, 70)
plt.title(u'2020的绝地求生战绩')
plt.show()

在这里插入图片描述

动态图

from matplotlib import pyplot as plt
import numpy as np
from matplotlib import animation

fig , axse = plt.subplots()
x = np.arange(0,2*np.pi,0.01)
line, = axse.plot(x,np.sin(x))

def animate(I):
    line.set_ydata(np.sin(x+I/10))
    return line,

def init():
    line.set_ydata(np.sin(x))
    return line,

ani = animation.FuncAnimation(fig=fig,func=animate,init_func=init,interval=20)
plt.show()

这个也要用ipython打开来画,不然就是一个静态图了。很神奇哦,快去试试吧。就不上图了,想看结果动动手。

写在最后

遇到有趣的例子再加进来。动手练习一下,效果更加哦。

版权声明:本文为heart_ace原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/heart_ace/article/details/103845958

智能推荐

Python:matplotlib数据可视化(上)

在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓库 第一章 Matplotlib 简介 这里涉及Matplotlib 数据可视化模块的多个方面。 Matplotlib 能够创建多数类型的图表,如条形图,散点图,条形图,饼图,堆叠图,3D 图和地图图表。 首先,为了实际使用 Matplotlib,我们需要安装它。 如果你安装了更高版本的 Python,你应该能够打开cmd.exe或终端,然后...

python matplotlib数据可视化

数据可视化: 一般如果数据分为几类,就要把数据分开,分别画。 运行结果如图: 不需要分开的方法: 注意这里的label类型应该只能是list,array行不通。 且labels疑似只能用大于0的整数 ____________________________________________________________________________ matplotlib  annota...

Python数据可视化(matplotlib库)

1.首先安装matplotlib可视化插件: 在Windows系统中,首先需要安装Visual Studio。为此,请访问https://dev.windows.com/,单 击Downloads,再查找Visual Studio Community——一组免费的Windows开发工具。请下载并运行该安装程序。接下来我们安装matplotlib,根据自己的电脑配置和pyth...

Python数据可视化--Matplotlib

一、基本概念 Matplotlib 是一个 Python 的 2D 绘图库,是一个非常强大的 Python 画图工具。在机器学习和深度学习中,面对海量的数据集,我们时常需要通过绘图直观的呈现出这些数据的特点,比如,当我们通过梯度下降算法逐渐减小损失函数的值时,那么损失函数的变化到底如何呢?这时候就需要通过绘制损失函数的值再不断迭代中的变化趋势,来告诉我们它的变化情况,诸如此类的情况十分之多,所以学...

Python数据可视化:认识matplotlib

一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形。 用matplotlib生成基本图形非常简单,只需要几行代码,但要创建复杂的图表,需要调用更多的命令和反复试验,这要求用户对matplotlib有深入的认识。 蜂鸟数据推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,分别使用matplotlib, seaborn, plotly...

猜你喜欢

Matplotlib python 数据可视化

Matplotlib python 数据可视化 文章目录 Matplotlib python 数据可视化 1.如何安装matplotlib 2.基本用法 2.1 画函数 2.2 设置figure图像 2.3 坐标轴的设置 2.4 legend图例 2.5 Annotation标注 2.6 tick能见度 3.画图种类 3.1 散点图 3.2 柱状图 3.3 Image图片 3.4 3D数据 4.多...

Python数据可视化之matplotlib

1、使用函数绘制matplotlib的图表组成元素 (1)准备数据: (2)matplotlib图表组成元素的主要元素 函数 作用 plot() 展现变量的趋势变化 scatter() 寻找变量之间的关系 xlim() 设置x轴的数值显示范围 xlabel() 设置x轴的标签文本 grid() 绘制刻度线的网格线 axhline() 绘制平行于x轴的水平参考线 axvspan() 绘制垂直于x轴的...

python:matplotlib数据可视化--散点图

sactter函数的参数解读 plt.scatter(x,y,s=20,c=None,marker=‘0’,cmap=None,cmap=None, norm=None, vmin=None, vmax=None, alpha=None,linewidths=None, edgecolors=None) 一般散点图的绘制 案例: 汽车速度与距离的关系 import pand...

python数据可视化-matplotlib

matplotlib 1.线形图:plt.plot(参数) color参数指定线条的颜色 linestyle参数指定线条的形状 linewidth参数指定线条的宽度 marker参数可以对坐标点进行标记 颜色、线条和点的样式可以一起放置于格式字符串中,但是颜色设置要放在线条和点的样式前面 2.柱状图 - (1)基础柱状图 bar函数:plot.bar(参数) grid函数绘制格网:plt.grid...