matplotlib(피플롯)에서 프레임을 제거하는 방법.그림 vs matplotlib.그림 )(frameon=matplotlib의 잘못된 문제)
그림에서 프레임을 제거하기 위해 다음과 같이 씁니다.
frameon=False
완벽한 작업pyplot.figure
,에서는matplotlib.Figure
회색 배경만 삭제되고 프레임은 그대로 유지됩니다.또한, 나는 선만 보여주고 나머지 그림들은 모두 투명하게 보여 주길 바란다.
내가 원하는 것을 할 수 있는 pyplot을 가지고, 나는 matplotlib을 가지고 그것을 하고 싶다. 나는 내 질문을 연장하는 것을 언급하고 싶지 않다.
ax.axis('off')
조 킹턴이 지적한 대로, 표시된 선을 제외한 모든 것을 제거하라.
보더라벨이나 하고 싶은 는, 「」에 해 .spines
축 객체 ax
, 다음의 경우는, 4개의 면 모두에서 테두리를 삭제합니다.
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
리리제제를 제거하는 x
★★★★★★★★★★★★★★★★★」y
: "CHANKnowledge:
ax.get_xaxis().set_ticks([])
ax.get_yaxis().set_ticks([])
ㅇㅇㅇㅇ를 한다면 ㅇㅇㅇㅇㅇㅇ를 요.savefig
하지 않는 되는 해 주세요를 들면, 「」등).fig.savefig('blah.png', transparent=True)
를 참조해 주세요.
에서 도끼의 하려면 , 「도끼의 배경」을 설정할 필요가 .ax.patch
★★★★★★★★★★★★★★★★★」fig.patch
보이지 않게 말이야
예.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10))
for item in [fig, ax]:
item.patch.set_visible(False)
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)
(물론 SO의 흰색 배경은 구별이 안 되지만 모든 것이 투명합니다...)
에 다른 않은 에는 '축도 '축'을 ''로 하면 됩니다.ax.axis('off')
:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10))
fig.patch.set_visible(False)
ax.axis('off')
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)
그러나 이 경우 축이 전체 수치를 차지하도록 할 수 있습니다.할 수 "축 위치"를 사용할 ).subplots_adjust
아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아.
import matplotlib.pyplot as plt
fig = plt.figure(frameon=False)
ax = fig.add_axes([0, 0, 1, 1])
ax.axis('off')
ax.plot(range(10))
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)
새로운 버전의 matplotlib에서 못생긴 프레임을 제거하는 가장 쉬운 방법은 다음과 같습니다.
import matplotlib.pyplot as plt
plt.box(False)
접근 방식을 해야 하는 같이 하십시오.ax.set_frame_on(False)
.
@peol의 뛰어난 답변을 바탕으로 다음 방법으로 프레임을 제거할 수도 있습니다.
for spine in plt.gca().spines.values():
spine.set_visible(False)
예를 들면(이 투고 마지막에 코드 샘플 전체를 참조할 수 있습니다), 다음과 같은 막대 그래프가 있다고 합시다.
후, 「」를할 수 있습니다.x-
★★★★★★★★★★★★★★★★★」ytick
되지 않음) (「」를 )
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')
이 경우 막대에 직접 라벨을 붙일 수 있습니다.마지막 그림은 다음과 같습니다(코드는 다음과 같습니다).
다음은 그림을 생성하는 데 필요한 전체 코드입니다.
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
xvals = list('ABCDE')
yvals = np.array(range(1, 6))
position = np.arange(len(xvals))
mybars = plt.bar(position, yvals, align='center', linewidth=0)
plt.xticks(position, xvals)
plt.title('My great data')
# plt.show()
# get rid of the frame
for spine in plt.gca().spines.values():
spine.set_visible(False)
# plt.show()
# remove all the ticks and directly label each bar with respective value
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')
# plt.show()
# direct label each bar with Y axis values
for bari in mybars:
height = bari.get_height()
plt.gca().text(bari.get_x() + bari.get_width()/2, bari.get_height()-0.2, str(int(height)),
ha='center', color='white', fontsize=15)
plt.show()
여기에 답변한 바와 같이 스타일 설정(스타일 시트 또는 rcParams)을 통해 모든 플롯에서 가시를 제거할 수 있습니다.
import matplotlib as mpl
mpl.rcParams['axes.spines.left'] = False
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False
mpl.rcParams['axes.spines.bottom'] = False
문제
도끼 사용에도 비슷한 문제가 있었습니다.클래스 파라미터는 다음과 같습니다.frameon
하지만 KWARG는frame_on
. axes_api
>>> plt.gca().set(frameon=False)
AttributeError: Unknown property frameon
솔루션
frame_on
예
data = range(100)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(data)
#ax.set(frameon=False) # Old
ax.set(frame_on=False) # New
plt.show()
df = pd.DataFrame({
'client_scripting_ms' : client_scripting_ms,
'apimlayer' : apimlayer, 'server' : server
}, index = index)
ax = df.plot(kind = 'barh',
stacked = True,
title = "Chart",
width = 0.20,
align='center',
figsize=(7,5))
plt.legend(loc='upper right', frameon=True)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('right')
나는 그렇게 하곤 했다.
from pylab import *
axes(frameon = 0)
...
show()
plt.axis('off')
plt.savefig(file_path, bbox_inches="tight", pad_inches = 0)
plt.savefig 자체에는 이러한 옵션이 있습니다.그 전에 축을 설정하기만 하면 됩니다.
plt.box(False)
plt.xticks([])
plt.yticks([])
plt.savefig('fig.png')
효과가 있을 거야
다음은 다른 해결 방법입니다.
img = io.imread(crt_path)
fig = plt.figure()
fig.set_size_inches(img.shape[1]/img.shape[0], 1, forward=False) # normalize the initial size
ax = plt.Axes(fig, [0., 0., 1., 1.]) # remove the edges
ax.set_axis_off() # remove the axis
fig.add_axes(ax)
ax.imshow(img)
plt.savefig(file_name+'.png', dpi=img.shape[0]) # de-normalize to retrieve the original size
언급URL : https://stackoverflow.com/questions/14908576/how-to-remove-frame-from-matplotlib-pyplot-figure-vs-matplotlib-figure-frame
'programing' 카테고리의 다른 글
표준 시간대가 있는 PHP 날짜()? (0) | 2022.10.30 |
---|---|
Eclipse가 "JNI 공유 라이브러리를 로드하지 못했습니다"를 보고했습니다. (0) | 2022.10.29 |
Java에서는 어레이가 객체입니까? (0) | 2022.10.29 |
MySQL/MariaDB에서 root와 동일한 권한을 가진 사용자를 만들려면 어떻게 해야 합니까? (0) | 2022.10.29 |
JDK와 Java SDK의 차이점 (0) | 2022.10.29 |