add_subplot(add_subplot)
python用matplotlib绘图时,曲线或散点怎么删除?
在matplotlib中,每一个对象(图标,轴等)都提供了各种方法来获取其属性或者之类对象。\x0d\x0a如,最大的Artist容器是matplotlib.figure.Figure,它包括组成图表的所有元素。图表的背景是一个Rectangle对象,用Figure.patch属性表示。当你通过调用add_subplot或者add_axes方法往图表中添加轴(子图时),这些子图都将添加到Figure.axes属性中,同时这两个方法也返回添加进axes属性的对象,注意返回值的类型有所不同,实际上AxesSubplot是Axes的子类。\x0d\x0a\x0d\x0afig = plt.figure()\x0d\x0aax = fig.add_subplot(1,1,1)\x0d\x0a然后我们添加一条“Line”到这个“axes”中去\x0d\x0alines = ax.plot(np.arange(1000))\x0d\x0a\x0d\x0a此时,你可以运行fig.show()查看到图表对象中已经多了一条线\x0d\x0a\x0d\x0a当然,你也可以吧lines对象的位置打印出来,我这里是:\x0d\x0a[]\x0d\x0a\x0d\x0aOK,可能这个时候你已经知道如何做了,通过查询API我们知道是有一个POP方法的,那么你可能会这么写:\x0d\x0alines.pop(0)\x0d\x0a然后你会再次运行程序,你会发现画的先仍然存在,为什么呢?\x0d\x0a好吧,其实这个地方你可以理解为是一个值传递,而非引用删除,那么正确的方法是:\x0d\x0aax.lines.pop(0)\x0d\x0a\x0d\x0a你同样可以这样,传递一个地址过去\x0d\x0aax.lines.remove(lines[0])\x0d\x0a\x0d\x0a你大概可能通过这些方法进行删除\x0d\x0alines.pop(0) \x0d\x0alines.remove()\x0d\x0adel lines\x0d\x0a\x0d\x0a回答完毕。
python绘图篇
1,xlable,ylable设置x,y轴的标题文字。
2,title设置标题。
3,xlim,ylim设置x,y轴显示范围。
plt.show()显示绘图窗口,通常情况下,show()会阻碍程序运行,带-wthread等参数的环境下,窗口不会关闭。
plt.saveFig()保存图像。
面向对象绘图
1,当前图表和子图可以用gcf(),gca()获得。
subplot()绘制包含多个图表的子图。
configure subplots,可调节子图与图表边框距离。
可以通过修改配置文件更改对象属性。
图标显示中文
1,在程序中直接指定字体。
2, 在程序开始修改配置字典reParams.
3,修改配置文件。
Artist对象
1,图标的绘制领域。
2,如何在FigureCanvas对象上绘图。
3,如何使用Renderer在FigureCanvas对象上绘图。
FigureCanvas和Render处理底层图像操作,Artist处理高层结构。
分为简单对象和容器对象,简单的Aritist是标准的绘图元件,例如Line 2D,Rectangle,Text,AxesImage等,而容器类型包含许多简单的的 Aritist对象,使他们构成一个整体,例如Axis,Axes,Figure等。
直接创建Artist对象进项绘图操作步奏:
1,创建Figure对象(通过figure()函数,会进行许多初始化操作,不建议直接创建。)
2,为Figure对象创建一个或多个Axes对象。
3,调用Axes对象的方法创建各类简单的Artist对象。
Figure容器
如何找到指定的Artist对象。
1,可调用add_subplot()和add_axes()方法向图表添加子图。
2,可使用for循环添加栅格。
3,可通过transform修改坐标原点。
Axes容器
1,patch修改背景。
2,包含坐标轴,坐标网格,刻度标签,坐标轴标题等内容。
3,get_ticklabels(),,get-ticklines获得刻度标签和刻度线。
1,可对曲线进行插值。
2,fill_between()绘制交点。
3,坐标变换。
4,绘制阴影。
5,添加注释。
1,绘制直方图的函数是
2,箱线图(Boxplot)也称箱须图(Box-whisker Plot),是利用数据中的五个统计量:最小值、第一四分位
数、中位数、第三四分位数与最大值来描述数据的一种方法,它可以粗略地看出数据是否具有对称性以及分
布的分散程度等信息,特别可以用于对几个样本的比较。
3,饼图就是把一个圆盘按所需表达变量的观察数划分为若干份,每一份的角度(即面积)等价于每个观察
值的大小。
4,散点图
5,QQ图
低层绘图函数
类似于barplot(),dotchart()和plot()这样的函数采用低层的绘图函数来画线和点,来表达它们在页面上放置的位置以及其他各种特征。
在这一节中,我们会描述一些低层的绘图函数,用户也可以调用这些函数用于绘图。首先我们先讲一下R怎么描述一个页面;然后我们讲怎么在页面上添加点,线和文字;最后讲一下怎么修改一些基本的图形。
绘图区域与边界
R在绘图时,将显示区域划分为几个部分。绘制区域显示了根据数据描绘出来的图像,在此区域内R根据数据选择一个坐标系,通过显示出来的坐标轴可以看到R使用的坐标系。在绘制区域之外是边沿区,从底部开始按顺时针方向分别用数字1到4表示。文字和标签通常显示在边沿区域内,按照从内到外的行数先后显示。
添加对象
在绘制的图像上还可以继续添加若干对象,下面是几个有用的函数,以及对其功能的说明。
?points(x, y, ...),添加点
?lines(x, y, ...),添加线段
?text(x, y, labels, ...),添加文字
?abline(a, b, ...),添加直线y=a+bx
?abline(h=y, ...),添加水平线
?abline(v=x, ...),添加垂直线
?polygon(x, y, ...),添加一个闭合的多边形
?segments(x0, y0, x1, y1, ...),画线段
?arrows(x0, y0, x1, y1, ...),画箭头
?symbols(x, y, ...),添加各种符号
?legend(x, y, legend, ...),添加图列说明
2020-05-03 matplotlib.pyplot数据画图--双坐标
1、双坐标图
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
year = [2001,2002,2003,2004,2005]
num = [1000,800,1200,3400,1200]
s = []
for i in range(5):
????if i ==0:
????????s.append(1.0)
????????continue
? ? t =round((num[i]-num[i-1])/num[i-1],2)
? ? s.append(t)
print(year,num,s)
#设置图形大小
fig = plt.figure(figsize=(8,6))
#左侧柱状图
p1 = fig.add_subplot(1,1,1)? ?#行,列,第几个
p1.bar(year,num,label='left map')
p1.legend(loc='upper left')
p1.set_xlabel('year')
p1.set_ylabel('num')
#右侧折线图
p2 = p1.twinx()
p2.plot(year,s,color='red',label='right map')
p2.legend(loc='upper right')
p2.set_ylabel('rate')
p2.set_ylim(-1,2)
#标题
plt.title("double map")
#显示图像
plt.show()
2、上下两幅图
# -*- coding: UTF-8 -*-
import matplotlib.pyplotas plt
year = [2001,2002,2003,2004,2005]
num = [1000,800,1200,3400,1200]
s = []
for iin range(5):
if i ==0:
s.append(1.0)
continue
? ? t =round((num[i]-num[i-1])/num[i-1],2)
s.append(t)
print(year,num,s)
#设置图形大小
fig = plt.figure(figsize=(8,6))
#左侧柱状图
p1 = fig.add_subplot(2,1,1)
p1.bar(year,num,label='left map')
p1.legend(loc='upper left')
p1.set_xlabel('year')
p1.set_ylabel('num')
p1.set_title("first map")
#右侧折线图
p2 = fig.add_subplot(2,1,2)
p2.plot(year,s,color='red',label='right map')
p2.legend(loc='upper right')
p2.set_ylabel('rate')
p2.set_ylim(-1,2)
p2.set_title("second map")
#自动设置间距
plt.tight_layout()
#显示图像
plt.show()
3、左右两幅图
# -*- coding: UTF-8 -*-
import matplotlib.pyplotas plt
year = [2001,2002,2003,2004,2005]
num = [1000,800,1200,3400,1200]
s = []
for iin range(5):
if i ==0:
s.append(1.0)
continue
? ? t =round((num[i]-num[i-1])/num[i-1],2)
s.append(t)
print(year,num,s)
#设置图形大小
fig = plt.figure(figsize=(8,6))
#左侧柱状图
p1 = fig.add_subplot(1,2,1)
p1.bar(year,num,label='left map')
p1.legend(loc='upper left')
p1.set_xlabel('year')
p1.set_ylabel('num')
p1.set_title("first map")
#右侧折线图
p2 = fig.add_subplot(1,2,2)
p2.plot(year,s,color='red',label='right map')
p2.legend(loc='upper right')
p2.set_ylabel('rate')
p2.set_ylim(-1,2)
p2.set_title("second map")
#自动设置间距
plt.tight_layout()
#显示图像
plt.show()