python绘图常用知识

python绘图常用知识

figure()、subplot()和subplots()、figure.add_subplot()、figure.add_axes()、plt.plot()、plt.xlim()和plt.ylim()、plt.legeng()、plt.show()

figure()函数

函数原型:

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)

– Create a new figure, or activate an existing figure. 新建一个画布或者激活一个已经存在的画布

参数:

  • num: int or str, figure的唯一编号。不指定调用figure时就会默认从1增加自动传入int。
  • figsize: 指定figure的宽和高,单位为英寸;=(weight,height)
  • dpi: 指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
  • facecolor: 背景颜色 ,facecolor=‘blue’
  • edgecolor: 边框颜色
  • frameon: 是否显示边框

(1)对于只画一张图,可以不使用plt.figure(),会默认将图形画在一张画布中

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,4]
y2=[1,4,8]
plt.plot(x,y1,color = "red",label = "red")
plt.plot(x,y2,color = "green",label = "green")
plt.legend()  #无此语句会不显示右上角label
plt.show()

在这里插入图片描述

(2)如果想画两张图则必须使用plt.figure()两次,可以指定num,也可以不指定num,调用两次它会默认加1

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,4]
y2=[1,4,8]

plt.figure()
plt.plot(x,y1,color = "red",label = "red")
plt.legend()  #无此语句会不显示右下角label

plt.figure()
plt.plot(x,y2,color = "green",label = "green")
plt.legend()  #无此语句会不显示右上角label
plt.show()

在这里插入图片描述

当然你也可以指定同一个num,他会和上面的输出结果一致,在同一张画布中输出图像

这个也就提供了我们后续向某个画布中添加图像的机会,只需要调用plt.figure(num),然后调用绘制图形的函数即可,比如plt.plot()等。

subplot()和subplots()

subplot()可以将figure 划分为n个子图,然后每次执行一次subplot()会生成一个对应位置的子图

subplot()函数原型:

subplot(nrows,ncols,sharex,sharey,subplot_kw,**fig_kw)`

参数:

  • nrows: subplot的行数
  • ncols: subplot的列数
  • sharex :所有subplot应该使用相同的X轴刻度(调节xlim将会影响所有的subplot)
  • sharey: 所有subplot应该使用相同的Y轴刻度(调节ylim将会影响所有的subplot)
  • subplot_kw: 用于创建各subplot的关键字字典
  • **fig_kw: 创建figure时的其他关键字
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 100)
#作图1
plt.subplot(2,2,1)  #等效于plt.subplot(221)
plt.plot(x, x)
#作图2
plt.subplot(2,2,2)
plt.plot(x, -x)
#作图3
plt.subplot(2,2,3)
plt.plot(x, x ** 2)
plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作图4
#plt.subplot(224)
#plt.plot(x, np.log(x))
plt.show()

在这里插入图片描述

subplots()函数与subplot()参数相似

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 100)
#划分子图
fig,axes=plt.subplots(2,2)   #返回一个画布和画轴对象,可以取出对于的画轴然后调用绘图函数
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]

#作图1
ax1.plot(x, x)
#作图2
ax2.plot(x, -x)
#作图3
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作图4
#ax4.plot(x, np.log(x))
plt.show()

在这里插入图片描述

和subplot()不同的是,subplots()一次画出所有的画轴,然后再调用绘图函数

figure对象可以添加子图或绘图区域

figure.add_subplot()

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 100)
#新建figure对象
fig=plt.figure()
#新建子图1
ax1=fig.add_subplot(2,2,1)
ax1.plot(x, x)
#新建子图3
ax3=fig.add_subplot(2,2,3)
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#新建子图4
ax4=fig.add_subplot(2,2,4)
ax4.plot(x, np.log(x))
plt.show()

在这里插入图片描述

可以看出和subplot的效果没什么不同

figure.add_axes()

import numpy as np
import matplotlib.pyplot as plt

#新建figure
fig = plt.figure()
# 定义数据

x = np.array([1, 2, 3, 4, 5, 6, 7])

#新建区域ax1

#figure的百分比,从figure 10%的位置开始绘制, 宽高是figure的80%
#图像还是要在figure内部

left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
# 获得绘制的句柄
ax1 = fig.add_axes([left, bottom, width, height])  #获取一个区域
ax1.plot(x,x**2 , 'r')
ax1.set_title('a1')
#plt.plot(x, y, 'r')

#新增区域ax2,嵌套在ax1内
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
# 获得绘制的句柄
ax2 = fig.add_axes([left, bottom, width, height])#获取另一个区域
ax2.plot(x,x**3, 'b')
ax2.set_title('a2')
plt.show()

在这里插入图片描述

这样就可以在figure的任何地方绘制图像,更加灵活!

plt.plot()

参数:

  • x, y : x是可选的,如果x没有,将默认是从0到n-1,也就是y的索引。
  • fmt : str, optional, 定义线条的颜色和样式的操作,如“ro”就是红色的圆圈, "r–"就是红色虚线,这是一个快速设置样式的方法,更多的参数可以参考最后一个keyboard arguments。
  • kwargs : Line2D properties, optional 这是一大堆可选内容,可以来里面指定很多内容,如“label”指定线条的标签,“linewidth”指定线条的宽度,等等
import matplotlib.pyplot as plt

a = [1, 2, 3, 4] # y 是 a的值,x是各个元素的索引
b = [5, 6, 7, 8]

plt.plot(a, b, 'g--', label = 'aa')
plt.xlabel('this is x')
plt.ylabel('this is y')
plt.title('this is a demo')
plt.legend() # 将样例显示出来
plt.show()

在这里插入图片描述

plt.xlim()和plt.ylim()

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(1,10,1000)
y = np.random.rand(1000)

plt.scatter(x,y,label="scatter figure")
plt.legend()

plt.xlim(1,10) #指定x和y的刻度值
plt.ylim(0,1)
plt.show()

在这里插入图片描述

plt.legeng()

legend--------(翻译:(地图或图标)图例、说明、解释)

1.设置图列位置

plt.legend(loc='')#  填入位置,如:upper left,则图例在左上角

2.设置图例字体大小

fontsize : int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}

3.设置图例边框及背景

plt.legend(loc='best',frameon=False) #去掉图例边框
plt.legend(loc='best',edgecolor='red') #设置图例边框颜色
plt.legend(loc='best',facecolor='blue') #设置图例背景颜色,若无边框,参数无效

4.设置图例标题

legend = plt.legend(["BJ", "SH"], title='Beijing VS Shanghai')
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,10,1)
plt.plot(x,x,'r--',x,np.cos(x),'g--',marker='*')
plt.xlabel('row')
plt.ylabel('cow')
plt.legend(["BJ","SH"],loc='upper left',title='Beijing VS Shanghai'
         # ,frameon=False
          ,edgecolor='green'
          ,facecolor='black')
plt.show()

在这里插入图片描述

plt.show()

plt.show()是显示图片,对于有人说为什么我没有使用此函数,一样可以显示图片??

那可能是你在使用IPython这一类的交互式编程环境,比如jupyter notebook 也属于内部就是调用了IPython,因为这一类可以及时输出结果,如果你是要IDE(集成开发环境,如pycharm),就必须使用plt.show()

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 中用于创建思维导图的库非常多,其中比较常用的有以下几个: 1. `graph-tool`:一个用于创建和操作图形的Python库,支持多种类型的图形,包括有向图和无向图。它提供了丰富的图形算法和绘图工具,可以创建复杂的思维导图。 2. `networkx`:一个用于复杂网络分析的Python库,支持多种类型的图形,包括有向图和无向图。它提供了多种图形算法和可视化工具,可以用来创建简单的思维导图。 3. `pydot`:一个用于创建和操作DOT语言图形的Python库,支持有向图和无向图。它提供了多种绘图工具和可视化工具,可以用来创建复杂的思维导图。 4. `pygraphviz`:一个用于创建和操作Graphviz图形的Python库,支持有向图和无向图。它提供了多种绘图工具和可视化工具,可以用来创建复杂的思维导图。 在使用这些库创建思维导图时,需要掌握以下几个知识点: 1. 图形的节点和边:创建思维导图时需要添加节点和边,可以使用不同的方法来添加不同类型的节点和边。 2. 图形的属性设置:可以设置节点和边的颜色、形状、大小等属性,以及整个图形的大小、背景色等属性。 3. 图形的布局算法:可以使用不同的布局算法来布置节点和边的位置,如随机布局、圆形布局、分层布局等。 4. 图形的绘制和保存:可以使用不同的绘图工具来绘制图形,并将图形保存到图片或PDF文件中。 以上是创建思维导图的一些基本知识点,同时还需要掌握Python的基本语法和编程思想。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值