matplotlib 条形图仅突出显示值

嗨,我想得到这种条形图。问题是如何通过选择设置相应的xlables?

http://img1.mukewang.com/614003950001e97406380427.jpg

我编码如下以删除不需要的国家/地区标签,但图表也有 nan 作为标签。


countries=['United States','Mexico','Japan','China','Korea,Rep.','Ireland','France','Italy']

new_index=list(df.index)

for i in range(len(new_index)):

    if new_index[i] not in countries :

        new_index[i]=np.nan

这是我的结果,标签中为 nan,条形之间的距离更宽:

http://img3.mukewang.com/614003a1000142ac05990459.jpg

对于数据:


import numpy as np

import pandas as pd


#Overall Country list

Countries=['United States','Mexico','Japan','China','Korea,Rep.','Ireland','France','Italy','Czech Republic',

 'Austria',

 'Slovak Republic',

 'Slovenia',

 'Germany',

 'Portugal',

 'Hungary',

 'Colombia',

 'New Zealand',

 'Norway',

 'Latvia']


#Countries to highlight

Desired=['United States','Mexico','Japan','China','Korea,Rep.','Ireland','France','Italy']


np.random.seed(0)

Value=np.random.rand(len(Countries))

df = pd.DataFrame({'Countries': Countries,'Value': Value,})

df.sort_values(['Value'],inplace=True)


df.set_index('Countries',drop=True,inplace=True)

ax_1 = df['Value'].plot(kind='bar', title ="graph", figsize=(10, 6), fontsize=12)

ax_1.set_xlabel("Country Name", fontsize=12)

plt.show()


泛舟湖上清波郎朗
浏览 204回答 1
1回答

www说

运行 x-ticks,然后根据countries列表禁用其中的几个。import numpy as npimport pandas as pd#Overall Country listCountries=['United States','Mexico','Japan','China','Korea,Rep.','Ireland','France','Italy','Czech Republic', 'Austria', 'Slovak Republic', 'Slovenia', 'Germany', 'Portugal', 'Hungary', 'Colombia', 'New Zealand', 'Norway', 'Latvia']#Countries to highlightDesired=['United States','Mexico','Japan','China','Korea,Rep.','Ireland','France','Italy']np.random.seed(0)Value=np.random.rand(len(Countries))df = pd.DataFrame({'Countries': Countries,'Value': Value,})df.sort_values(['Value'],inplace=True)df.set_index('Countries',drop=True,inplace=True)ax_1 = df['Value'].plot(kind='bar', title ="graph", figsize=(10, 6), fontsize=12)ax_1.set_xlabel("Country Name", fontsize=12)for ticks in ax_1.xaxis.get_major_ticks():    if ticks.label1.get_text() not in Desired:        ticks.label1.set_visible(False)        ax_1.patches[df.index.get_indexer([ticks.label1.get_text()])[0]].set_facecolor('w')        ax_1.patches[df.index.get_indexer([ticks.label1.get_text()])[0]].set_edgecolor('black')    else:        ax_1.patches[df.index.get_indexer([ticks.label1.get_text()])[0]].set_facecolor('r')        
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python