<p>问题是MED_COST列是字符串,而不是数字。这些字符串用作记号标签,但对于<code>0,1,2,3,4,5,...</code>处的记号位置,在<code>0, 50000, ...</code>处设置记号位置将使所有内容都不可见,记号0除外</p>
<p>因此,将这些字符串转换为数字应该可以解决问题。它们可以通过<a href="https://matplotlib.org/3.2.1/api/ticker_api.html#matplotlib.ticker.StrMethodFormatter" rel="nofollow noreferrer">^{<cd3>}</a>显示为货币。与显式设置记号不同,<a href="https://matplotlib.org/3.2.1/api/ticker_api.html#matplotlib.ticker.MultipleLocator" rel="nofollow noreferrer">^{<cd4>}</a>是另一个选项,用于防止在新数据可用时重新计算记号</p>
<p>由于<code>plot</code>可以更改某些设置,因此首先调用<code>plot</code>,然后再设置标签和记号可能会有所帮助</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams
import numpy as np
from matplotlib import ticker
rcParams['figure.figsize'] = 20, 10
df = pd.DataFrame({
'YEAR': [1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010, 2020],
'MED_COST': ['$31500', '$48700', '$58600', '$71800', '$115400', '$148800', '$146000', '$250242', '$295000']})
# make the 'MED_COST' column numeric
df.MED_COST = [int(m[1:]) for m in df.MED_COST]
plt.plot(df.YEAR, df.MED_COST)
plt.title('Median Cost Of Maryland Homes', fontsize=30)
plt.ylabel('Median Price Of Home', fontsize=25)
plt.xlabel('Year', fontsize=25)
plt.yticks(np.arange(0, 450001, 50000))
# plt.gca().yaxis.set_major_locator(ticker.MultipleLocator(50000))
plt.gca().yaxis.set_major_formatter(ticker.StrMethodFormatter('${x:,.0f}'))
plt.grid(True)
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/Aj2Rd.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Aj2Rd.png" alt="resulting plot"/></a></p>