matplotlib 强化学习
matplotlib 强化学习
import matplotlib.pyplot as plt
...
plt.show() #显示图像;下面都要写,就不重复了
二维图表
1. 基本图表
- 用plot方法画出x=(0,10)间sin的图像
x = np.linspace(0, 10, 30) #产生0-10之间的30个均匀数组
plt.plot(x, np.sin(x)); #以x为横坐标,sin(x)为纵坐标打印出图像
注:
- linspace生成的是包含结尾的数组,比如0-10生成11个数才是0,1,2,3,4,5...
- 生成10个数则是0,1.11111111, 2.22222222, 3.33333333, 4.44444444...;
- 而arrange是不包含结尾的,0-10生成10个数是0,1,2,3...
- 用点,线的方式画出x=(0,10)间sin的图像
plt.plot(x, np.sin(x), '-o');
#'o’代表每个数据点用小圆圈表示,且数据点之前不用线连接,看起来很像散点图
#'ro'代表小圆圈是红色的
#'-'就是最普通的线型,数据点之间用实线连接。
#'--'设置线性为虚线
!
- 用scatter方法画出x=(0,10)间sin的点图像
plt.scatter(x, np.sin(x)); #散点图

- 用饼图的面积及颜色展示一组4维数据
rng = np.random.RandomState(0)
x = rng.randn(100) #生成随机数组
y = rng.randn(100)
colors = rng.rand(100)
sizes = 1000 * rng.rand(100)
plt.scatter(x, y, c=colors, s=sizes, alpha=0.3,
cmap='viridis')
plt.colorbar(); # 展示色阶

绘制柱状图
x = [1,2,3,4,5,6,7,8]
y = [3,1,4,5,8,9,7,2]
label=['A','B','C','D','E','F','G','H']
plt.bar(x,y,tick_label = label); #纵向升高
plt.barh(x,y,tick_label = label); #换成横向

直方图
data = np.random.randn(1000) #生成1000个随机数
plt.hist(data); #画出图像
!
2. 自定义图表元素
x = np.linspace(0,10,100)
plt.plot(x, np.sin(x))
plt.ylim(-1.5, 1.5); #设置y轴显示范围为(-1.5,1.5)
x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y, label='sin(x)')
plt.xlabel('variable x'); #设置x,y轴标签variable x,value y
plt.ylabel('value y');
plt.title('三角函数'); #设置图表标题“三角函数”
plt.text(3.2, 0, 'sin(x)', weight='bold', color='r'); #注释
plt.annotate('maximum',xy=(np.pi/2, 1),xytext=(np.pi/2+1, 1),weight='bold',color='r',arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='r')); #箭头标识
显示网格
x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.grid()
...
参数
matplotlin.pyplot.grid(b, which, axis, color, linestyle, linewidth, **kwargs) axis : 取值为‘both’, ‘x’,‘y’。就是想绘制哪个方向的网格线。不过我在输入参数的时候发现如果输入x或y的时候, 输入的是哪条轴,则会隐藏哪条轴
color : 这就不用多说了,就是设置网格线的颜色。或者直接用c来代替color也可以。
plt.grid(c='g') 设置颜色为绿色
linestyle :也可以用ls来代替linestyle, 设置网格线的风格,是连续实线,虚线或者其它不同的线条。 | '-' | '--' | '-.' | ':' | 'None' | ' ' | '']
plt.grid(linestyle='-.')
linewidth : 设置网格线的宽度
...

绘制平行于x轴y=0.8的水平参考线
x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.axhline(y=0.8, ls='--', c='r')#水平参考线
3. 自定义图像
在一张图里绘制sin,cos的图形,并展示图例
x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), label='sin')
ax.plot(x, np.cos(x), '--', label='cos')
ax.legend();

多子图
在2个子图中,显示sin(x)和cos(x)的图像
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.5, 0.8, 0.4], ylim=(-1.2, 1.2))
ax2 = fig.add_axes([0.1, 0.1, 0.8, 0.4], ylim=(-1.2, 1.2))
x = np.linspace(0, 10)
ax1.plot(np.sin(x));
ax2.plot(np.cos(x));

for i in range(1, 7): #用for创建6个子图,并且在图中标识出对应的子图坐标
plt.subplot(2, 3, i)
plt.text(0.5, 0.5, str((2, 3, i)),fontsize=18, ha='center')

组合绘制大小不同的子图

grid = plt.GridSpec(2, 3, wspace=0.4, hspace=0.3)
plt.subplot(grid[0, 0])
plt.subplot(grid[0, 1:])
plt.subplot(grid[1, :2])
plt.subplot(grid[1, 2]);
三维图像
#38.创建一个三维画布
from mpl_toolkits import mplot3d
fig = plt.figure()
ax = plt.axes(projection='3d')
#39.绘制一个三维螺旋线
ax = plt.axes(projection='3d')
# Data for a three-dimensional line
zline = np.linspace(0, 15, 1000)
xline = np.sin(zline)
yline = np.cos(zline)
ax.plot3D(xline, yline, zline);
#40.绘制一组三维点
ax = plt.axes(projection='3d')
zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens');



import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
q1 = np.arange(0.01, 1, 0.01)
q2 = np.arange(0.01, 1 , 0.01) #生成一位基底
q1, q2 = np.meshgrid(q1, q2) #混合成二维数组,形成二维基底
pCDa = (1-q1)
pCDb = (np.sqrt((1-q1)**2+q1**2)-q1)
s_pCD = -q1* np.log2(q1) - (1-q1) * np.log2(1-q1)
Q_MID1 = s_pCD *q2 /q2 #AB或CD的关联值,下图是(s_x_pCD - s_pCD) *q2; *q2/q2后才是圆柱体
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(q1,q2,Q_MID1) #表面图
ax.set_xlabel('value of q2')
ax.set_ylabel('value of q1')
ax.set_zlabel('the value of Q_MID1(pCD)')
plt.show()
#参数
ax.plot_surface(X, Y, Z, *args, **kwargs)
X,Y,Z:数据
rstride、cstride、rcount、ccount:同Wireframe plots定义
color:表面颜色
cmap:图层

参考文献:
https://www.kesci.com/home/project/5de9f0a0953ca8002c95d2a9 50题matplotlib从入门到精通
https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html 官方文档
matplotlib 强化学习的更多相关文章
- 【转载】 强化学习(六)时序差分在线控制算法SARSA
原文地址: https://www.cnblogs.com/pinard/p/9614290.html ------------------------------------------------ ...
- 爬格子问题(经典强化学习问题) Sarsa 与 Q-Learning 的区别
SARSA v.s. Q-learning 爬格子问题,是典型的经典强化学习问题. 动作是上下左右的走,每走一步就会有一个-1的奖赏.从初始状态走到最终的状态,要走最短的路才能使奖赏最大.图中有一个悬 ...
- 强化学习之Q-learning简介
https://blog.csdn.net/Young_Gy/article/details/73485518 强化学习在alphago中大放异彩,本文将简要介绍强化学习的一种q-learning.先 ...
- 强化学习之四:基于策略的Agents (Policy-based Agents)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 强化学习之二:Q-Learning原理及表与神经网络的实现(Q-Learning with Tables and Neural Networks)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译.(This article is my personal translation for the tutor ...
- 深度强化学习:Policy-Based methods、Actor-Critic以及DDPG
Policy-Based methods 在上篇文章中介绍的Deep Q-Learning算法属于基于价值(Value-Based)的方法,即估计最优的action-value function $q ...
- 深度强化学习:Deep Q-Learning
在前两篇文章强化学习基础:基本概念和动态规划和强化学习基础:蒙特卡罗和时序差分中介绍的强化学习的三种经典方法(动态规划.蒙特卡罗以及时序差分)适用于有限的状态集合$\mathcal{S}$,以时序差分 ...
- 强化学习之CartPole
0x00 任务 通过强化学习算法完成倒立摆任务,控制倒立摆在一定范围内摆动. 0x01 设置jupyter登录密码 jupyter notebook --generate-config jupyt ...
- 【整理】强化学习与MDP
[入门,来自wiki] 强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益.其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的 ...
随机推荐
- Linux 番茄时钟 定时 取消 快捷方式
shell 脚本 clock.sh #!/bin/bash if [ $1 == 0 ] then at -d `atq | awk -v ORS=" " '{a[NR]=$1} ...
- indetityserver4-implicit-grant-types-请求流程叙述-下篇
上一篇将请求流程描述一遍,这篇将描述一下相关的源码. 1 访问客户端受保护的资源 GET /Home/Secure HTTP/1.1HTTP/1.1 302 Found Date: Tue, 23 O ...
- eatwhatApp开发实战(四)
之前我们做了添加店铺了功能,接下来我们做删除功能,并介绍对话框的使用方法. 在init()中注册listview的item点击监听 //注册监听 shop_lv.setOnItemClickListe ...
- [SD心灵鸡汤]004.每月一则 - 2015.08
1.事常与人违,事总在人为. 2.骏马是跑出来的,强兵是打出来的. 3.驾驭命运的舵是奋斗.不抱有一丝幻想,不放弃一点机会,不停止一日努力. 4.如果惧怕前面跌宕的山岩,生命就永远只能是死水一潭. 5 ...
- 【转】从一副扑克牌中随机抽取N张
该问题为产生不重复的随机数序列,形象点就是一副扑克牌中随机抽取N张. 摘自:不重复随机数列生成算法 改了一部分 /** * 从0-max随机选N个数出来 * **/ public static int ...
- java方式实现希尔排序
一.希尔排序简述和基本思想 希尔排序也称递减增量排序算法,是插入排序的一种更高效的改进版本.但是希尔排序是非稳定排序的算法.希尔排序比一般插入排序有以下几点改进: 一般插入排序每次只能将数据移动一位, ...
- vivo产能问题
生产手机,第一天量产1台,接下来2天(即第二.三天)每天量产2件,接下来3天(即第四.五.六天)每天量产3件 ... ... 以此类推,请编程计算出第n天总共可以量产的手机数量. public int ...
- 利用metasploit复现永恒之蓝
环境 目标机器:windows 7 ,172.16.136.169 攻击机:安装了Metasploit 的 ubuntu16.04 ,172.16.136.130 (安装Metasploit:在 Ub ...
- ucoreos_lab1
前言 最近觉得自己之前蛮多基础课学的并不咋滴,便想再补补.前段时间突然看到清华的操作系统实验,于是乎就打算试试,一边学一边做实验,然后通过博客来记录记录. 实验内容 lab1 中包含一个 bootlo ...
- RocketMQ系列(一)基本概念
RocketMQ是阿里出品的一款开源的消息中间件,让其声名大噪的就是它的事务消息的功能.在企业中,消息中间件选择使用RocketMQ的还是挺多的,这一系列的文章都是针对RocketMQ的,咱们先从Ro ...