Skip to main content
 首页 » 编程设计

python之使用千位分隔符和字体大小格式化 y 轴 matplotlib

2025年05月04日20cmt

下面的代码有效。

姓名 = 1960 - 2016 年

values = 美国每年的 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) 用“,”格式化标签以表示千位分隔符,例如 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() 

下面是我创建的虚拟数据的图表: