导航:首页 > 编程语言 > python绘制大小不同的子图

python绘制大小不同的子图

发布时间:2023-10-18 08:46:55

python绘图中的四个绘图技巧

pre{overflow-x: auto}

技巧1: plt.subplots()

技巧2: plt.subplot()

技巧3: plt.tight_layout()

技巧4: plt.suptitle()

数据集:

让我们导入包并更新图表的默认设置,为图表添加一点个人风格。 我们将在提示上使用 Seaborn 的内置数据集:

import seaborn as sns # v0.11.2   import matplotlib.pyplot as plt # v3.4.2   sns.set(style='darkgrid', context='talk', palette='rainbow')df = sns.load\_dataset('tips')   df.head()

技巧1: plt.subplots()

绘制多个子图的一种简单方法是使用 plt.subplots() 。

这是绘制 2 个并排子图的示例语法:

fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(10,4))   sns.histplot(data=df, x='tip', ax=ax[0])   sns.boxplot(data=df, x='tip', ax=ax[1]);

在这里,我们在一个图中绘制了两个子图。 我们可以进一步自定义每个子图。

  例如,我们可以像这样为清谈隐每个子图添加标题:

fig, ax = plt.subplots(1, 2, figsize=(10,4))   sns.histplot(data=df, x='tip', ax=ax[0])   ax[0].set\_title("Histogram")   sns.boxplot(data=df, x='tip', ax=ax[1])   ax[1].set\_title("Boxplot");

在循环中将所有数值变量用同一组图表示:

numerical = df.select\_dtypes('number').columnsfor col in numerical:    fig, ax = plt.subplots(1, 2, figsize=(10,4))    sns.histplot(data=df, x=col, ax=ax[0])    sns.boxplot(data=df, x=col, ax=ax[1]); 技巧2: plt.subplot()

另一种可视化多个图形的方法是使用 plt.subplot(), 末尾没有 s

  语法与之前略有不同:

plt.figure(figsize=(10,4))   ax1 = plt.subplot(1,2,1)   sns.histplot(data=df, x='tip', ax=ax1)   ax2 = plt.subplot(1,2,2)   sns.boxplot(data=df, x='tip', ax=ax2);

当我们想为多个图绘制相同类型的图形并在单个图中查看所有图形,该方法特别有用:

plt.figure(figsize=(14,4))   for i, col in enumerate(numerical):    ax = plt.subplot(1, len(numerical), i+1) 侍培   sns.boxplot(data=df, x=col, ax=ax)

我们同样能定制子图形。例如加个 title

plt.figure(figsize=(14,4))   for i, col in enumerate(numerical):    ax = plt.subplot(1, len(numerical), i+1) 答厅   sns.boxplot(data=df, x=col, ax=ax)     ax.set\_title(f"Boxplot of {col}")

通过下面的比较,我们能更好的理解它们的相似处与不同处熟悉这两种方法很有用,因为它们可以在不同情况下派上用场。

技巧3: plt.tight_layout()

在绘制多个图形时,经常会看到一些子图的标签在它们的相邻子图上重叠,

如下所示:

categorical = df.select\_dtypes('category').columnsplt.figure(figsize=(8, 8))   for i, col in enumerate(categorical):    ax = plt.subplot(2, 2, i+1)    sns.countplot(data=df, x=col, ax=ax)

顶部两个图表的 x 轴上的变量名称被剪掉,右侧图的 y 轴标签与左侧子图重叠.使用 plt.tight_layout 很方便

plt.figure(figsize=(8, 8))   for i, col in enumerate(categorical):    ax = plt.subplot(2, 2, i+1)    sns.countplot(data=df, x=col, ax=ax)    plt.tight\_layout()

专业 看起来更好了。

技巧4: plt.suptitle()

真个图形添加标题:

plt.figure(figsize=(8, 8))   for i, col in enumerate(categorical):    ax = plt.subplot(2, 2, i+1)    sns.countplot(data=df, x=col, ax=ax)    plt.suptitle('Category counts for all categorical variables')   plt.tight\_layout()

此外,您可以根据自己的喜好自定义各个图。 例如,您仍然可以为每个子图添加标题。

到此这篇关于python绘图 四个绘图技巧的文章就介绍到这了,希望大家以后多多支持!

㈡ 求教python一个作图的问题

matplotlib 是python最着名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。

它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。

在Linux下比较着名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不高。

而Matplotlib则比较强:Matlab的语法、python语言、latex的画图质量(还可以使用内嵌的latex引擎绘制的数学公式)。

本文目录

1.Matplotlib.pyplot快速绘图

2.面向对象画图

3.Matplotlib.pylab快速绘图

4.在图表中显示中文

5.对LaTeX数学公式的支持

6.对数坐标轴

7.学习资源

Matplotlib.pyplot快速绘图

快速绘图和面向对象方式绘图

matplotlib实际上是一套面向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条Line2D、文字Text、刻度等在内存中都有一个对象与之对应。

为了方便快速绘图matplotlib通过pyplot模块提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。我们只需要调用pyplot模块所提供的函数就可以实现快速绘图以及设置图表的各种细节。pyplot模块虽然用法简单,但不适合在较大的应用程序中使用。

为了将面向对象的绘图库包装成只使用函数的调用接口,pyplot模块的内部保存了当前图表以及当前子图等信息。当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示"Get Current Figure"和"Get Current Axes"。在pyplot模块中,许多函数都是对当前的Figure或Axes对象进行处理,比如说:

plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图。

可以在Ipython中输入类似"plt.plot??"的命令查看pyplot模块的函数是如何对各种绘图对象进行包装的。

配置属性

matplotlib所绘制的图表的每个组成部分都和一个对象对应,我们可以通过调用这些对象的属性设置方法set_*()或者pyplot模块的属性设置函数setp()设置它们的属性值。

因为matplotlib实际上是一套面向对象的绘图库,因此也可以直接获取对象的属性

配置文件

绘制一幅图需要对许多对象的属性进行配置,例如颜色、字体、线型等等。我们在绘图时,并没有逐一对这些属性进行配置,许多都直接采用了matplotlib的缺省配置。

matplotlib将这些缺省配置保存在一个名为“matplotlibrc”的配置文件中,通过修改配置文件,我们可以修改图表的缺省样式。配置文件的读入可以使用rc_params(),它返回一个配置字典;在matplotlib模块载入时会调用rc_params(),并把得到的配置字典保存到rcParams变量中;matplotlib将使用rcParams字典中的配置进行绘图;用户可以直接修改此字典中的配置,所做的改变会反映到此后创建的绘图元素。

绘制多子图(快速绘图)

Matplotlib 里的常用类的包含关系为Figure -> Axes -> (Line2D, Text, etc.)一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域,可以理解为子图。

可以使用subplot()快速绘制包含多个子图的图表,它的调用形式如下:

subplot(numRows, numCols, plotNum)

subplot将整个绘图区域等分为numRows行* numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。如果numRows,numCols和plotNum这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。

subplot()返回它所创建的Axes对象,我们可以将它用变量保存起来,然后用sca()交替让它们成为当前Axes对象,并调用plot()在其中绘图。

绘制多图表(快速绘图)

如果需要同时绘制多幅图表,可以给figure()传递一个整数参数指定Figure对象的序号,如果序号所指定的Figure对象已经存在,将不创建新的对象,而只是让它成为当前的Figure对象。

import numpy as np
import matplotlib.pyplot as plt

plt.figure(1) # 创建图表1
plt.figure(2) # 创建图表2
ax1 = plt.subplot(211) # 在图表2中创建子图1
ax2 = plt.subplot(212) # 在图表2中创建子图2

x = np.linspace(0, 3, 100)
for i in xrange(5):
plt.figure(1) #❶ # 选择图表1
plt.plot(x, np.exp(i*x/3))
plt.sca(ax1) #❷ # 选择图表2的子图1
plt.plot(x, np.sin(i*x))
plt.sca(ax2) # 选择图表2的子图2
plt.plot(x, np.cos(i*x))

plt.show()

在图表中显示中文

matplotlib的缺省配置文件中所使用的字体无法正确显示中文。为了让图表能正确显示中文,可以有几种解决方案。

㈢ 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, ...),添加图列说明

㈣ python matplotlib模块 如何画两张图出来

python matplotlib模块 如何画两张图出来的方法:

代码如下所示:

import numpy as np

import matplotlib.pyplot as plt

#创建自变量数组

x= np.linspace(0,2*np.pi,500)

#创建函数值数组

y1 = np.sin(x)

y2 = np.cos(x)

y3 = np.sin(x*x)

#创建图形

plt.figure(1)

'''

意思是在一个2行2列共4个子图的图中,定位第1个图来进行操作(画图)。

最后面那个1表示第1个子图。那个数字的变化来定位不同的子图

'''

#第一行第一列图形

ax1 = plt.subplot(2,2,1)

#第一行第二列图形

ax2 = plt.subplot(2,2,2)

#第二行

ax3 = plt.subplot(2,1,2)

#选择ax1

plt.sca(ax1)

#绘制红色曲线

plt.plot(x,y1,color='red')

#限制y坐标轴范围

plt.ylim(-1.2,1.2)

#选择ax2

plt.sca(ax2)

#绘制蓝色曲线

plt.plot(x,y2,'b--')

plt.ylim(-1.2,1.2)

#选择ax3

plt.sca(ax3)

plt.plot(x,y3,'g--')

plt.ylim(-1.2,1.2)

plt.show()

附上效果图。

㈤ python中fig,ax=plt.subplots什么意思

fig,ax=plt.subplots的意思是将plt.subplots()函数的返回值赋值给fig和ax两个变量。

plt.subplots()是一个函数,返回一个包含figure和axes对象的元组,因此,使用fig,ax=plt.subplots()将元组分解为fig和ax两个变量。

通常,我们只用到ax:

fig,ax = plt.subplots(nrows=2, ncols=2)

axes = ax.flatten()

把父图分成2*2个子图,ax.flatten()把子图展开赋值给axes,axes[0]便是第一个子图,axes[1]是第二个。


(5)python绘制大小不同的子图扩展阅读

在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。所属关系如下:

def subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True,

subplot_kw=None, gridspec_kw=None, **fig_kw):

参数:

nrows,ncols:子图的行列数。

sharex, sharey:

设置为 True 或者 ‘all’ 时,所有子图共享 x 轴或者 y 轴,

设置为 False or ‘none’ 时,所有子图的 x,y 轴均为独立,

设置为 ‘row’ 时,每一行的子图会共享 x 或者 y 轴,

设置为 ‘col’ 时,每一列的子图会共享 x 或者 y 轴。

返回值

fig:matplotlib.figure.Figure对象

ax:子图对象(matplotlib.axes.Axes)或者是他的数组

㈥ python之pyplot

1、 定义x和y,画图展示,保存图片

其中dpi参数指定图像的分辨率为120
2、 优化绘图线条风格

线条颜色color

线条标记marker

线条风格linestyle

3、 坐标轴的控制
坐标轴范围和标题

坐标图上标记

坐标间隔设定
函数plt.xticks()和plt.xticks()用来实现对x轴和y轴坐标间隔(也就是轴雀兆记号)的设定。用法上,函蠢蔽数的输入是两个列表,第一个表示取值,第二个表示标记。当然如果你的标记就是取值本身,则第二个列表可以忽略

多图与子图
figure() 函数可以帮助我们同时处理生成多个图,而subplot()函数则用来实现,在一个大图中,出现多个小的子图。需要注意的是, figure() 中的参数为图片序号,一般是按序增加的,这里面还涉及一个当前图的概念,其中 subplot() 的参数有3个,分别为行数、列数、以及子图序号。比如 subplot(1,2,1) 表示这是一个1行,2列布局的图(两个子图,在同一行,分居左右),其中,当前处理的子图是第一个图(也就是左顷档租图)。

这样,我们就用一个脚本画了两张图fig.1和fig.2。其中,fig.1包含了分居左右的两个子图,分别是y1和y3的曲线;fig.2是一张整图,画的是y2曲线。

如果想要某个子图占据整行或者整列,可以采用下面
第三个图,实际上相当于将前面的两个小的子图看作是一个整图

阅读全文

与python绘制大小不同的子图相关的资料

热点内容
max加线命令 浏览:424
app胖瘦模式哪个好用 浏览:724
可以下载源码的软件 浏览:487
程序员写一天代码累吗 浏览:628
ie文件夹禁止访问 浏览:543
百川互联网程序员 浏览:783
linuxpython解释器 浏览:667
兴安得力软件加密狗 浏览:492
智能网络摄像头加密 浏览:574
软件毕业程序员培训 浏览:652
安卓陀螺仪低怎么办 浏览:247
一级建造师复习题集pdf 浏览:903
法理学pdf海默 浏览:392
服务器内存储器是用什么的 浏览:819
微帮同城分类信息源码 浏览:808
安卓系统ad是什么 浏览:473
python输出中不加占位符 浏览:596
linux文件夹权限控制 浏览:732
雅虎邮箱怎么加密码 浏览:822
为什么安卓手机登录不了苹果账号 浏览:537