用数千个分隔符和字体大小格式化y轴matplotlib

时间:2018-08-07 19:35:09

标签: python matplotlib

下面的代码有效。

名称= 1960年至2016年

值=每年美国的GDP

代码产生两个图表,但是y轴标签的范围是5000到175000。我想 1)将标签的格式设置为“,”以表示千位分隔符,例如5,000或17,500,并且

2)我想增加标签的字体大小-因此增加例如5000的字体。

找不到在线可行/可理解的示例。帮助表示赞赏。

%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-white')
import numpy as np
from numpy import array

# Plot GDP/Year

names =  usa.loc[: , "Year"]
values = usa.loc[: , "GDP Billions"]

plt.figure(1, figsize=(15, 6))
plt.suptitle('GDP Growth', fontsize=20)

plt.subplot(121)
plt.plot(names, values)
plt.xticks(np.arange(0, 57, step=5.0))
plt.ylabel('GDP', fontsize=16)
plt.title('United States',fontsize=16)

plt.subplot(122)
plt.plot(names, values)
plt.xticks(np.arange(0, 57, step=5.0))
plt.xlabel('Year', fontsize=16)
plt.title('United States',fontsize=16)

#plt.ticklabel_format(axis='y', style='sci', scilimits=(0, 4))
#print(plt.xticks())


plt.show()

1 个答案:

答案 0 :(得分:2)

1)用“,”表示标签的格式,以千位分隔符为例,例如5,000或17,500,以及(如How do I format axis number format to thousands with a comma in matplotlib?

fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.get_yaxis().set_major_formatter(
matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))

2)我想增加标签的字体大小-因此增加例如5000的字体:

plt.rc('ytick', labelsize=5000) 

这是您更改代码以合并这些解决方案的方式(按照评论的要求):

%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-white')
import numpy as np
from numpy import array

plt.rc('ytick', labelsize=12) 

# Plot GDP/Year
names =  usa.loc[: , "Year"]
values = usa.loc[: , "GDP Billions"]


fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))

fig.suptitle('GDP Growth', fontsize=20)

ax1.plot(names, values)
ax1.set_xticklabels(np.arange(0, 57, step=5.0))
ax1.set_ylabel('GDP', fontsize=16)
ax1.set_title('United States',fontsize=16)
ax1.get_yaxis().set_major_formatter(
matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))

ax2.plot(names, values)
ax2.set_xticklabels(np.arange(0, 57, step=5.0))
ax2.set_ylabel('Year', fontsize=16)
ax2.set_title('United States',fontsize=16)
ax2.get_yaxis().set_major_formatter(
matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))
#plt.ticklabel_format(axis='y', style='sci', scilimits=(0, 4))
#print(plt.xticks())


plt.show()

这是我创建的虚拟数据的曲线图: enter image description here