[PYTHON] matplotlib에서 축 번호 형식을 쉼표로 수천 자로 어떻게 포맷합니까?
PYTHONmatplotlib에서 축 번호 형식을 쉼표로 수천 자로 어떻게 포맷합니까?
x 축의 숫자 형식을 10000 대신 10,000으로 변경하려면 어떻게해야합니까? 이상적으로, 나는 이런 식으로하고 싶다.
x = format((10000.21, 22000.32, 10120.54), "#,###")
다음은 코드입니다.
import matplotlib.pyplot as plt
# create figure instance
fig1 = plt.figure(1)
fig1.set_figheight(15)
fig1.set_figwidth(20)
ax = fig1.add_subplot(2,1,1)
x = 10000.21, 22000.32, 10120.54
y = 1, 4, 15
ax.plot(x, y)
ax2 = fig1.add_subplot(2,1,2)
x2 = 10434, 24444, 31234
y2 = 1, 4, 9
ax2.plot(x2, y2)
fig1.show()
해결법
-
==============================
1.형식 지정자로 다음을 사용하십시오.
형식 지정자로 다음을 사용하십시오.
>>> format(10000.21, ',') '10,000.21'
또는 format 대신 str.format을 사용할 수도 있습니다.
>>> '{:,}'.format(10000.21) '10,000.21'
matplotlib.ticker.FuncFormatter 사용 :
... ax.get_xaxis().set_major_formatter( matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ','))) ax2.get_xaxis().set_major_formatter( matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ','))) fig1.show()
-
==============================
2.가장 좋은 방법은 StrMethodFormatter를 사용하는 것입니다.
가장 좋은 방법은 StrMethodFormatter를 사용하는 것입니다.
import matplotlib as mpl ax.yaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:,.0f}'))
예 :
import pandas as pd import requests import matplotlib.pyplot as plt import matplotlib as mpl url = 'https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USDT&aggregate=1' df = pd.DataFrame({'BTC/USD': [d['close'] for d in requests.get(url).json()['Data']]}) ax = df.plot() ax.yaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:,.0f}')) plt.show()
-
==============================
3.나는이 일을하려고 할 때마다 항상이 같은 페이지에서 나 자신을 발견한다. 물론, 다른 대답은 일을 끝내지 만, 다음에 기억하기 쉽지 않습니다! 예 : 티커 가져 오기 및 람다, 사용자 정의 def 등 사용
나는이 일을하려고 할 때마다 항상이 같은 페이지에서 나 자신을 발견한다. 물론, 다른 대답은 일을 끝내지 만, 다음에 기억하기 쉽지 않습니다! 예 : 티커 가져 오기 및 람다, 사용자 정의 def 등 사용
ax라는 축이 있다면 간단한 해결책이 있습니다 :
ax.set_yticklabels(['{:,}'.format(int(x)) for x in ax.get_yticks().tolist()])
-
==============================
4.당신이 해키하고 짧다면 라벨을 업데이트 할 수 있습니다.
당신이 해키하고 짧다면 라벨을 업데이트 할 수 있습니다.
def update_xlabels(ax): xlabels = [format(label, ',.0f') for label in ax.get_xticks()] ax.set_xticklabels(xlabels) update_xlabels(ax) update_xlabels(ax2)
-
==============================
5.matplotlib.ticker.funcformatter를 사용할 수 있습니다.
matplotlib.ticker.funcformatter를 사용할 수 있습니다.
import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as tkr def func(x, pos): # formatter function takes tick label and tick position s = '%d' % x groups = [] while s and s[-1].isdigit(): groups.append(s[-3:]) s = s[:-3] return s + ','.join(reversed(groups)) y_format = tkr.FuncFormatter(func) # make formatter x = np.linspace(0,10,501) y = 1000000*np.sin(x) ax = plt.subplot(111) ax.plot(x,y) ax.yaxis.set_major_formatter(y_format) # set formatter to needed axis plt.show()
from https://stackoverflow.com/questions/25973581/how-do-i-format-axis-number-format-to-thousands-with-a-comma-in-matplotlib by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 여러 범위의 파이썬 공용체 (0) | 2018.11.19 |
---|---|
[PYTHON] 파이썬에서 큰 따옴표 셸 명령을 subprocess.Popen ()에 전달 하시겠습니까? (0) | 2018.11.19 |
[PYTHON] 내 컬러 바에 왜 선이 들어 있습니까? (0) | 2018.11.19 |
[PYTHON] 이 코드에서 'wb'는 파이썬을 사용하여 무엇을 의미합니까? (0) | 2018.11.19 |
[PYTHON] 파이썬 :`datetime.datetime`에서`time.time`으로 변환하기 (0) | 2018.11.19 |