Python画截断图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python画截断图相关的知识,希望对你有一定的参考价值。

参考技术A 近日,帮女朋友画截断图时,遇到了一些问题,网上很多资料都是互相粘贴,缺少能够解决问题的帖子,经过查看官方api最终解决了问题。
在此记录一下,也希望能够帮助其他有需要的人。

这个是最方便的一种解决办法,官网地址为 Pypi ,官网的教程比较简洁

即可以得到可用的图:

看着效果好像还不错,但是如果要画柱状图,则如何解决呢?
仿照官方的程序,我们可以写出来以下的程序

得到以下图:

这个图我们可以发现存在一定的问题,它的横坐标不对了,我们的“1”显示不出来了!!!
那怎么解决呢?可以知道我们在bar()函数中使用 tick_label=name_list 是不可行的了,那我们试下 plt.xticks 函数看看
首先删除bar函数中的 tick_label=name_list ,然后在 plt.show() 前面加上 plt.xticksx,name_list) ,得到下图结果

我们通过对比这两个图,可以发现一个很trick的解决办法!
第一个图,没有自带的刻度,但是少了一个我们想要的刻度;第二个图,存在自带的刻度,但是我们想要的刻度全都有!
我们能不能考虑结合下呢?
我们尝试在bar中加上一个空的刻度,然后再显示出来

因此,这个方案在一些简单的图上还可以应用,复杂的场景就难以解决了!

matplotlib具有很强的自定义能力,我们可以考虑通过画两个子图,然后拼接成一个,来生成我们的截断图!

看着结果似乎还不错,坐标的刻度也显示正常啦

只是,由于我们使用subplot画出来的两个图默认大小是一样的,而前文使用brokenaxes画出来的截断上下的长度并不一样。我们这样画出来的图不好看,还需要调整下!
考虑到matplotlib可以使用grid来画图,我们尝试用它来调整下上下两图的比例!

画出来的结果好看多了!

重新画一下图

问题解决了!
我们得到了一个完整的图!

参考文献:

以上是关于Python画截断图的主要内容,如果未能解决你的问题,请参考以下文章

Python Plotly 到 PNG 文件在左边距上截断条形图文本

如何防止 Nivo 刻度轴文本中的文本截断(条形图)

截断柱状图制作步骤

3D 线条从屏幕中途截断

Pillow 返回错误:“IOError:图像文件被截断(6 个字节未处理)”

使用python截断Databricks中的增量表