pandas 如何更改条形图上的y轴限制?

rur96b6h  于 2023-06-20  发布在  其他
关注(0)|答案(3)|浏览(139)

我有一个df,我从中索引了europe_n,并绘制了一个条形图。

  • europe_n(r=5,c=45),看起来像这样。;

  • df['Country']string)& df['Population']numeric)variable/s。
plt.bar(df['Country'],df['Population'], label='Population')
plt.xlabel('Country')  
plt.ylabel('Population')  
plt.legend()  
plt.show()

这给了我;

目标:我试图将y轴限制更改为从0开始,而不是43,094

我运行了,plt.ylim(0,500000)方法,但y轴没有变化,抛出了一个错误。matplotlib库有什么建议吗?

错误;

**结论:**我无法按我想要的方式绘制图形的原因是因为所有列都是object dtype。我只有在Jupyter抛出一个错误时才意识到这一点,声明“没有整数要绘制”。最终将数字列Population转换为int类型,代码工作,我得到了图形!

snz8szmq

snz8szmq1#

ax.set_ylim([0,max_value])

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
df = pd.DataFrame({
    'Country':['Denmark', 'Finland', 'Iceland', 'Norway', 'Sweden'],
    'Population':[5882261, 5540745, 372899, 5434319, 10549347]
})
print(df)
###
   Country  Population
0  Denmark     5882261
1  Finland     5540745
2  Iceland      372899
3   Norway     5434319
4   Sweden    10549347
fig, ax = plt.subplots()
ax.bar(df['Country'], df['Population'], color='#3B4B59')
ax.set_title('Population of Countries')
ax.set_xlabel('Country')
ax.set_ylabel('Population')
max_value = 12000000
ticks_loc = np.arange(0, max_value, step=2000000)
ax.set_yticks(ticks_loc)
ax.set_ylim([0,max_value])
ax.set_yticklabels(['{:,.0f}'.format(x) for x in ax.get_yticks()])
ax.grid(False)
fig.set_size_inches(10,5)
fig.set_dpi(300)
plt.show()

请确保您已经导入了以下软件包,

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

你的代码应该像这样:

fig, ax = plt.subplots()
ax.bar(europe_n['Country'].values, europe_n['Area(sq km)'].values, color='#3B4B59')
ax.set_xlabel('Country')
ax.set_ylabel('Population')
max_value = 500000
ticks_loc = np.arange(0, max_value, step=10000)
ax.set_yticks(ticks_loc)
ax.set_ylim(0,max_value)
ax.set_yticklabels(['{:,.0f}'.format(x) for x in ax.get_yticks()])
ax.grid(False)
fig.set_size_inches(10,5)
fig.set_dpi(300)
plt.show()
rekjcdws

rekjcdws2#

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.ylim.html

设置y限制

plt.ylim(开始,结束)

设置x限制

plt.xlim(start,end)

示例

utugiqy6

utugiqy63#

问题是在y轴上绘制的值是字符串而不是整数。您需要将这些值转换为整数,它将解决问题。在这种情况下,population阵列需要更新:

Country = ['India', 'US', 'UK']
population = ['4554', '14120', '1422']

plt.bar(Country , [int(x) for x in population], label="Usage of the population")
plt.xlabel("Countries")
plt.ylabel("Population values")
plt.title('Population report')
plt.legend()

有详细回答:Matplotlib - bar chart starts does not start with 0

相关问题