相关疑难解决方法(0)

Plt.show显示完整的图形,但savefig正在裁剪图像

我的代码成功地将图像保存到文件中,但它正在从右侧裁剪重要的细节.当出现问题时,存在修复此问题的答案plt.show,但是savefig在此示例中是错误生成图形的命令.怎么解决这个问题?

我的代码的相关示例:

import glob
import os
for file in glob.glob("*.oax"):
    try:
        spc_file = open(file, 'r').read()
        newName = file[6:8] + '-' + file[4:6] + '-' + file[0:4] + ' ' + file[8:12] +  ' UTC (Observed) - No Sea Breeze Day'
        plt.title(newName, fontsize=12, loc='left')
        plt.savefig('X:/' + newName + '.png')        
        plt.show()
    except Exception:
        pass
Run Code Online (Sandbox Code Playgroud)

图像(顶部plt.show和底部是由savefig以下文件生成的文件:

用plt.show显示时的图像 保存到文件时的图像


python matplotlib

53
推荐指数
2
解决办法
3万
查看次数

如何使用Matplotlib对齐两个y轴刻度的网格线?

我正在绘制y轴上具有不同单位的两个数据集.有没有办法让刻度线和网格线在两个y轴上对齐?

第一张图片显示了我得到的内容,第二张图片显示了我想要获得的内容.

这是我用来绘制的代码:

import seaborn as sns
import numpy as np
import pandas as pd

np.random.seed(0)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(pd.Series(np.random.uniform(0, 1, size=10)))
ax2 = ax1.twinx()
ax2.plot(pd.Series(np.random.uniform(10, 20, size=10)), color='r')
Run Code Online (Sandbox Code Playgroud)

不需要的行为示例

想要行为的例子

python plot matplotlib seaborn

35
推荐指数
4
解决办法
2万
查看次数

第二个y轴标签被切断

我试图用matplotlib在条形图中绘制两组数据,所以我在方法中使用了两个轴twinx().但是,第二个y轴标签被切断.我尝试了几种不同的方法但没有成功(tight_layout()设置major_pads rcParams等等).我觉得解决方案很简单,但我还没有遇到过.

这是一个MWE:

#!/usr/bin/env python
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

matplotlib.rcParams.update({'font.size': 21})
ax = plt.gca()
plt.ylabel('Data1') #Left side
ax2 = ax.twinx()
for i in range(10):
  if(i%2==0):
    ax.bar(i,np.random.randint(10))
  else:
    ax2.bar(i,np.random.randint(1000),color='k')


plt.ylabel('Data2') #Right
Run Code Online (Sandbox Code Playgroud)

side plt.savefig("test.png")

Data2截止的示例图

python graph matplotlib

27
推荐指数
2
解决办法
3万
查看次数

Python:Savefig切断了标题

嘿,我试图保存我的情节,但总是切断我的头衔.我认为这是因为y = 1.05(设置标题的距离).我无法解决它.有没有办法保存整个图表?

time=round(t[time_period],0)
most_sensitive=sorted(most_sensitive)
plt.figure(figsize=(10, 5))
plt.suptitle("Scatterplot "+str(name)+" , "+r'$\Delta$'+"Output , Zeit= "+str(time)+" s",fontsize=20,y=1.05)
figure_colour=["bo","ro","go","yo"]
for i in [1,2,3,4]:
    ax=plt.subplot(2,2,i)
    plt.plot(parm_value[:,most_sensitive[i-1]], Outputdiff[:,most_sensitive[i-1]],figure_colour[i-1])
    ax.set_xlabel(name+"["+str(most_sensitive[i-1])+"] in "+str(unit))
    ax.set_ylabel(r'$\Delta$'+"Output")
    lb, ub = ax.get_xlim( )
    ax.set_xticks( np.linspace(lb, ub, 4 ) )
    lb, ub = ax.get_ylim( )
    ax.set_yticks( np.linspace(lb, ub, 8 ) )
    ax.grid(True)


plt.tight_layout()
newpath = r'C:/Users/Tim_s/Desktop/Daten/'+str(name)+'/'+str(time)+'/'+'scatterplot'+'/'
if not os.path.exists(newpath):
    os.makedirs(newpath)
savefig(newpath+str(name)+'.png')
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib title save

7
推荐指数
3
解决办法
1万
查看次数

如何将fig保存为matplotlib.pyplot中的显示?

我正在使用matplotlib.pyplot图例绘制条形图,plt.savefig()plt.show(). 更准确地说,图例不在情节中,jpg文件只有图例的左侧一半。

我的代码:

from matplotlib import pyplot as plt
fig = plt.figure(figsize=(12,6))
plt.bar(x, y, label="a")
plt.legend(bbox_to_anchor=(1.02, 1), loc="upper left")
plt.show()
fig.savefig("a.jpeg")
Run Code Online (Sandbox Code Playgroud)

我查看了这个答案Matplotlib savefig 与图外的图例,但选择的答案建议手动调整轴。我有很多不同的数字,所以可能不合适。多年前就贴出来了,不知道有没有什么自动的方法可以实现plt.savefig()as的效果plt.show()?我在plt.savefig().

谢谢!

python plot matplotlib legend

5
推荐指数
1
解决办法
6946
查看次数

将 matplotlib 文件另存为 png 时 Y 轴标签丢失

我正在尝试将 matplotlib 图形保存为 png 格式。当我运行程序时,我看到由于 plt.show() 而出现图形,并且该图形具有 y 轴标签。但是当我查看创建的 .png 文件时,y 轴标签丢失了。

png 文件

图形

代码:

plt.plot_date(times, tps, 'b-', xdate=True)

plt.xlabel('Time', fontsize=20)
plt.ylabel('Transactions per Second', fontsize=20)
title = str(sys.argv[1])
title = title[title.rfind('/') + 1:]

plt.savefig(title + ".png")
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

5
推荐指数
1
解决办法
5634
查看次数

matplotlib savefig - 文字切断

说我创建一个情节:

import matplotlib.pyplot as plt
plt.clf()
import numpy as np
props = np.random.randint(0,100,(200,))
x=np.arange(1,201,1)
plt.plot(x,props,c='k')
plt.xlabel('blah blah blah blah blah blah\n blah blah blah blah blah')
plt.ylabel('blah blah blah blah blah blah blah blah blah')
fig=plt.gcf()
fig.set_size_inches(3.75,3.75)#14, 23)
plt.savefig('testfig.png',dpi=300)
Run Code Online (Sandbox Code Playgroud)

当使用Ipython(通过Spyder)时,情节显示正常.然而,当我查看保存的图像时,它呈现:

在此输入图像描述

如您所见,文本被截断.处理此问题的建议做法是什么?

我通过增加数字大小来绕过它,然后重新调整大小.但是,我的目标是生成一组具有一致文本大小的图像(图形大小不同); 所以这种方法并不理想.

注意.虽然存在类似的问题,但这个问题的区别在于它:

  • 处理xlabelylabel.
  • 结合set_size_inches功能
  • 寻求确保具有不同图形尺寸的一致文本大小.
  • 试图找出Ipython输出与savefig不同的原因

python matplotlib

3
推荐指数
2
解决办法
4973
查看次数

xlabel和ylabel超出绘图区域,无法在图中完整显示

在此输入图像描述

从图中可以看出,xlabel和ylabe超出了绘图区域,无法完全显示。

有人可能会说改变字体大小,但我希望字体变大。

下面是代码:

from numpy import *
from pylab import *
tduration=3600

if tduration<960:
    time=linspace(0,tduration,120)
else:
    n=(tduration-960)/480
    time1=linspace(0,960,8,endpoint=False)
    time2=linspace(960,tduration,n)

    time=hstack((time1,time2))
timemin=time/60
T0=20
Tf=T0+345*log10(8*timemin+1)
timetem=column_stack((timemin,Tf))
savetxt("timetem.txt",timetem,newline='\r\n',fmt='%f')
heatingRate=345/(8*timemin+1)
fig,ax1 =subplots()

ax2 = ax1.twinx()


rc('font',family='Times New Roman')


ax1.plot(timemin,Tf,'k',linewidth=3,label='ISO834 fire curve')
ax2.plot(timemin,heatingRate,'b--',linewidth=3,label='heating rate')
ax1.plot(0, 0,'b--', label = 'heating rate',linewidth=3)
leg=ax1.legend(loc='best',fontsize=24)
leg.get_frame().set_alpha(0.0)

ax1.set_ylabel(r"T$(^{\circ}C)$",fontsize=24,fontname="Times New Roman")
ax2.set_ylabel(r"Heating rate($^{\circ}C$/min)",fontsize=24,fontname="Times     New Roman")
ax1.set_xlabel("Time(min)",fontsize=24,fontname="Times New Roman") 
ax1.tick_params(labelsize=24)
ax2.tick_params(labelsize=24)
ax1.grid()
show()
fig.savefig('iso834 with hr.png', transparent=True)
Run Code Online (Sandbox Code Playgroud)

python label position matplotlib

2
推荐指数
1
解决办法
4211
查看次数

标签 统计

matplotlib ×8

python ×8

plot ×3

graph ×1

label ×1

legend ×1

position ×1

save ×1

seaborn ×1

title ×1