Pandas Matplotlib保存图形时坐标轴标签太长导致显示不全问题的解决

目录
  • 前言
  • 1. 问题描述
  • 2. 问题原因
  • 4. 解决方法
  • 结束语

前言

本篇博客主要解决在使用pandas绘制图像并保存时,由于标签太长,导致坐标轴上的标签显示不全的问题。刚遇到问题时调整了一下图片大小,然鹅并没有卵用,于是乎就检索了一下问题,发现没有解决pandas的。查询无果后,查看了一下官方文档,顿悟,这不就是matplotlib嘛,换了一个关键字再查询,果然,就是。所以本篇同样适用于解决matplotlib绘制图像时出现的这个问题。

	# 部分代码
	df_sparsity = distiller.weights_sparsity_summary(resnet20)
	df_sparsity_tmp = df_sparsity[['NNZ (dense)', 'NNZ (sparse)']]
	ax = df_sparsity_tmp.iloc[0:-1].plot(kind='bar', figsize=[30,10], title="Sparse vs. Dense\n(element-wise)")
	ax.set_xticklabels(df_sparsity.Name, rotation=90)

	fig = ax.get_figure()
	fig.savefig('output.png')

1. 问题描述

使用pandasDataFrame存储数据并绘制图像,横坐标轴的标签是ResNet20的各个layer的名字,像module.layer1.0.conv1.weight这样,由于太长,导致绘制出来的图像是这样的:

坐标轴的标签没有显示全,于是就尝试改变图像的大小:

	# 改变下高度
	ax = df_sparsity_tmp.iloc[0:-1].plot(kind='bar', figsize=[30,50], title="Sparse vs. Dense\n(element-wise)")

于是图像就变成了下面这样,虽然有效果,但图片被拉长,依旧不美观:

2. 问题原因

既然调整绘制图像尺寸之后绘制出来的图片依旧不符合预期,那就只能看看官方的文档了----pandas.DataFrame.plot(),看看是不是还有其他参数,能够使图像的大小及位置不变,坐标轴的绘制空间适当调整。然后就发现了这个:

函数返回了一个matplotlib.axes.Axes,既然是matlitplot,那问题就很容易解决了,matplotlib老搞这样的事。查看一下matplotlib的文档----matplotlib.pyplot.savefig(),可以看到:

默认情况下,仅保存图形给定的部分,如果设置为tight,将尝试保存更紧致的图形。

4. 解决方法

在保存图形是加入bbox_inches参数:

	# 设置tight bbox
	fig.savefig('output.png', bbox_inches='tight')

再次保存图形,此时的就很ok了:

结束语

到此这篇关于Pandas Matplotlib保存图形时坐标轴标签太长导致显示不全问题解决的文章就介绍到这了,更多相关Pandas Matplotlib保存图形显示不全内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python使用matplotlib和pandas实现的画图操作【经典示例】

    本文实例讲述了Python使用matplotlib和pandas实现的画图操作.分享给大家供大家参考,具体如下: 画图在工作再所难免,尤其在做数据探索时候,下面总结了一些关于python画图的例子 #encoding:utf-8 ''''' Created on 2015年9月11日 @author: ZHOUMEIXU204 ''' # pylab 是 matplotlib 面向对象绘图库的一个接口.它的语法和 Matlab 十分相近 import pandas as pd #from ggp

  • python之 matplotlib和pandas绘图教程

    不得不说使用python库matplotlib绘图确实比较丑,但使用起来还算是比较方便,做自己的小小研究可以使用.这里记录一些统计作图方法,包括pandas作图和plt作图. 前提是先导入第三方库吧 import pandas as pd import matplotlib.pyplot as plt import numpy as np 然后以下这两句用于正常显示中文标签什么的. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

  • Python高级数据分析之pandas和matplotlib绘图

    目录 一.matplotlib 库 二.Pandas绘图 1.绘制简单的线型图 1.1)简单的Series图表示例 .plot() 1.2) 两个Series绘制的曲线可以叠加 2.数据驱动的线型图(分析苹果股票) 3.绘制简单的柱状图 4.绘制简单的直方图 5.绘制简单的核密度(“ked”)图 6.绘制简单的散点图 总结 一.matplotlib 库 一个用来绘图的库 import matplotlib.pyplot as plt 1)plt.imread(“图片路径”) 功能: 将图片加载后

  • Pandas Matplotlib保存图形时坐标轴标签太长导致显示不全问题的解决

    目录 前言 1. 问题描述 2. 问题原因 4. 解决方法 结束语 前言 本篇博客主要解决在使用pandas绘制图像并保存时,由于标签太长,导致坐标轴上的标签显示不全的问题.刚遇到问题时调整了一下图片大小,然鹅并没有卵用,于是乎就检索了一下问题,发现没有解决pandas的.查询无果后,查看了一下官方文档,顿悟,这不就是matplotlib嘛,换了一个关键字再查询,果然,就是.所以本篇同样适用于解决matplotlib绘制图像时出现的这个问题. # 部分代码 df_sparsity = disti

  • pyecharts X轴标签太长被截断的问题及解决

    目录 pyecharts X轴标签太长被截断 方案一 方案二 Pyecharts X轴显示不全问题 成功解决的代码如下 pyecharts X轴标签太长被截断 方案一 旋转标签 使用rotate旋转X轴标签 # rotate 旋转角度    bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15,interval=0))) 方案二 使用grid设置X轴下方距离图片边缘的距离 gri

  • Laravel 5.4因特殊字段太长导致migrations报错的解决

    前言 本文主要介绍了关于Laravel 5.4因特殊字段太长导致migrations报错的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: laravel 5.4 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持.MySQL 需要v5.7.7或者更高版本,当你试着在一些MariaDB或者一些老版本的的MySQL上运行 migrations 命令时,你会碰到下面这个错误: [Illuminate\Database\QueryException] SQLS

  • matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())

    在pyplot模块中可以使用xlabel()和ylabel()函数设置x轴y轴的标签.这两个函数的使用方法非常相似. 使用xlabel()设置x轴标签 函数签名为matplotlib.pyplot.xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs) 参数作用及取值如下: xlabel:类型为字符串,即标签的文本. labelpad:类型为浮点数,默认值为None,即标签与坐标轴的距离. loc:取值范围为{'le

  • python matplotlib画盒图、子图解决坐标轴标签重叠的问题

    在使用matplotlib画图的时候将常会出现坐标轴的标签太长而出现重叠的现象,本文主要通过自身测过好用的解决办法进行展示,希望也能帮到大家,原图出现重叠现象例如图1: 代码为: data1=[[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765]] data

  • python matplotlib画图时坐标轴重叠显示不全和图片保存时不完整的问题解决

    目录 问题 解决方案 保存时图片不完整的问题 补充:使用matplotlib时如何让坐标轴完整显示所有的标签刻度 总结 问题 在使用matplotlib作图的时候,有的时候会遇到画图时坐标轴重叠,显示不全和图片保存时不完整的问题.如下: 解决方案 画图时重叠或者显示不全的问题 画图时加上参数设置tight_layout=True 画完所有子图后,设置plt.tight_layout() # 加上tight_layout=True 参数设置 fig, axes = plt.subplots(nro

  • Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度

    前言 matplotlib.pyplot是一些命令行风格函数的集合,使matplotlib以类似于MATLAB的方式工作.每个pyplot函数对一幅图片(figure)做一些改动:比如创建新图片,在图片创建一个新的作图区域(plotting area),在一个作图区域内画直线,给图添加标签(label)等.matplotlib.pyplot是有状态的,亦即它会保存当前图片和作图区域的状态,新的作图函数会作用在当前图片的状态基础之上. 在开始本文之前,不熟悉的朋友可以先看看这篇文章:Python

  • Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法

    本文实例讲述了Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法.分享给大家供大家参考,具体如下: Matplotlib中文显示问题--用例子说明问题 #-*- coding: utf-8 -*- from pylab import * t = arange(-4*pi, 4*pi, 0.01) y = sin(t)/t plt.plot(t, y) plt.title('www.jb51.net - test') plt.xlabel(u'\u2103',fontp

  • matplotlib画图之修改坐标轴刻度问题

    目录 一.未设置横纵坐标轴刻度(默认情况下) 示例代码1 二.修改坐标轴刻度 示例代码2 三.给对应的横坐标刻度加上标签文本 示例代码3 一.未设置横纵坐标轴刻度(默认情况下) 示例代码1 # 修改x轴与y轴的刻度 import matplotlib.pyplot as plt lst1 = list(range(0,15)) lst2 = list(range(15,30)) plt.plot(lst1,lst2) plt.show() 结果如下: 此时上图中的坐标轴刻度间距为2 二.修改坐标

  • Python使用matplotlib填充图形指定区域代码示例

    本文代码重点在于演示Python扩展库matplotlib.pyplot中fill_between()函数的用法. import numpy as np import matplotlib.pyplot as plt # 生成模拟数据 x = np.arange(0.0, 4.0*np.pi, 0.01) y = np.sin(x) # 绘制正弦曲线 plt.plot(x, y) # 绘制基准水平直线 plt.plot((x.min(),x.max()), (0,0)) # 设置坐标轴标签 pl

随机推荐