在Python中怎么绘制带有连接线的双饼图


这篇文章主要介绍“在Python中怎么绘制带有连接线的双饼图”,在日常操作中,相信很多人在在Python中怎么绘制带有连接线的双饼图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在Python中怎么绘制带有连接线的双饼图”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!matplotlib.patches 模块中的 ConnectionPatch 类可以用来绘制两个子图之间的连线。在双饼图等可视化中,可以利用这个类来绘制两个子图之间的连线,用以表达它们之间的关系。该类提供了许多参数和方法,可以用来控制连线的样式和位置等属性。ConnectionPatch 用于在 Matplotlib 中添加连线,其主要参数如下:xyA:连接线的起始点;xyB:连接线的结束点;coordsA:起始点的坐标系,默认为 data;coordsB:结束点的坐标系,默认为 data;axesA:起始点所在的 Axes 对象;axesB:结束点所在的 Axes 对象;color:连接线的颜色;linewidth:连接线的线宽;linestyle:连接线的线型。ConnectionPatch 的常用方法包括:set_color:设置连接线的颜色;set_linewidth:设置连接线的线宽;set_linestyle:设置连接线的线型。cm是Matplotlib的颜色映射模块,它提供了一系列的颜色方案,包括了单色调,分段调色和连续渐变调色等多种颜色方案,能够更好的满足数据可视化中的需求。这段代码用于定义大饼图和小饼图的数据,并设置大饼图的分裂距离和小饼图的宽度。具体解释如下:labels:定义大饼图每个分裂块的标签,即分别表示哪个区域。size:定义大饼图每个分裂块的大小,即表示每个区域的数量或占比。explode:定义大饼图每个分裂块距离饼心的距离,即分裂块是否需要弹出,这里设置为不弹出。labels2:定义小饼图每个分裂块的标签,即分别表示哪个区域。size2:定义小饼图每个分裂块的大小,即表示每个区域的数量或占比。width:定义小饼图的宽度,这里设置为0.2。这部分代码创建了一个大小为 (9, 5) 的画布 fig,并在该画布上添加了两个子图 ax1 和 ax2。其中,fig.add_subplot(121) 表示将画布分为 1 行 2 列的子图,选择第 1 个子图(即左边的子图);fig.add_subplot(122) 则表示选择第 2 个子图(即右边的子图)。子图的编号规则类似于数组索引,行号从上到下从 1 开始递增,列号从左到右从 1 开始递增,如 (1, 1) 表示第一行第一列的子图,(1, 2) 表示第一行第二列的子图。在这里 121 和 122 分别表示第一行的第一个子图和第二个子图。这段代码用于在第一个子图(ax1)中绘制一个饼图。具体参数的含义如下:size: 饼图的数据,表示每个饼图块的大小。autopct: 饼图块的数据标签格式,“%1.1f%%” 表示保留一位小数并添加百分号。startangle: 饼图块的开始角度,30度为起始点,顺时针方向旋转。labels: 饼图块的标签,与 size 对应。colors: 饼图块的颜色,使用了 cm.Blues() 函数生成一个颜色列表。explode: 饼图块的分裂距离,表示是否与饼图中心分离。例如 (0, 0, 0, 0, 0, 0, 0, 0.1) 表示最后一个饼图块与中心分离 0.1 个半径长度。可以根据需要调整这些参数以及其他饼图的参数来获得所需的效果。这段代码用于绘制第二个小饼图。具体参数含义如下:size2:小饼图的数据,即 [12255, 207069];autopct:格式化锲形块的数据标签,‘%1.1f%%’ 表示保留一位小数,并在后面加上百分号;startangle:小饼图的起始角度,以度数表示,这里设为 90 度,即从竖直方向开始;labels2:小饼图的标签,即 [‘402’, ‘407’];colors:指定颜色,这里使用 cm.Blues 函数生成一组蓝色系列颜色;radius:小饼图的半径,这里设为 0.5;shadow:是否添加阴影,这里设为 False。在这段代码中,我们创建了一个名为 ax2 的子区域对象,并使用 pie 方法绘制了一个小饼图,将 size2 中的数据作为输入数据。其他参数指定了锲形块的格式、颜色、标签等属性,进一步定制了图形的样式。这部分代码是用来计算连接两个饼图的连接线的起点和终点位置,并创建一个 ConnectionPatch 对象用于绘制连接线。theta1theta2分别表示饼图上最后一个扇形的起始角度和终止角度。center表示饼图中最后一个扇形的中心点位置。r表示饼图的半径。xy表示连接线的终点坐标,其中 x 通过利用三角函数计算出来。接下来,ConnectionPatch 的参数解释:xyA 表示连接线的起点位置,这里设为 (0, 0.5) 表示在小饼图上以它的左边中间位置为起点。xyB 表示连接线的终点位置,这里为 (x, y) 表示在大饼图上以计算得到的 x 和 y 为终点位置。coordsA 和 coordsB 表示起点和终点所在的坐标系,这里分别为小饼图和大饼图的坐标系。axesA 和 axesB 分别表示起点和终点所在的子图对象,这里分别为小饼图和大饼图的子图对象,即 ax2 和 ax1。这段代码用于创建连接线的第二个对象con2。具体解释如下:x 和 y 分别代表了连接线从小饼图中(-0.1,-0.49)这个点出发,到大饼图中theta1角度对应的点的终点坐标。其中,theta1是通过访问ax1.patches[-1].theta1获得的。coordsA 和 coordsB 表示终点和起点坐标的坐标系类型。这里都是 ‘data’ 表示使用数据坐标系,即默认的 x 和 y 坐标值。axesA 和 axes免费云主机域名B 表示终点和起点所在的子图对象。其中,axesA 为小饼图,axesB 为大饼图。这里使用ConnectionPatch函数创建连接线对象。这段代码用于设置连接线的颜色和粗细,并将连接线添加到小饼图的坐标系上。具体来说,循环遍历连接线对象列表 [con1, con2],并依次对每个连接线进行以下操作:调用set_color()方法设置连接线的颜色为灰色。调用ax2.add_artist()方法将连接线添加到小饼图的坐标系上。调用set_linewidth()方法设置连接线的宽度为 1。这行代码调整了子图之间的水平间距,将间距设置为0,即将子图紧密排列。wspace参数表示子图之间的宽度间距。具体来说,这行代码将第一个子图和第二个子图之间的间距设置为0,使它们之间没有空隙。可视化结果为:到此,关于“在Python中怎么绘制带有连接线的双饼图”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: python pip安装的包目录怎么查看

这篇文章主要介绍“pythonpip安装的包目录怎么查看”,在日常操作中,相信很多人在pythonpip安装的包目录怎么查看问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”pythonpip安装的包目录怎么查看”的疑惑有所帮助!接…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/07 17:08
下一篇 07/07 17:08

相关推荐