【问题标题】:numbers in yaxis is not arranged in order in matplotlibyaxis中的数字在matplotlib中没有按顺序排列
【发布时间】:2020-10-11 13:29:51
【问题描述】:

[图中y轴的数字排列不整齐,x轴的单词靠得太近。我实际上是在为 COVID19 案例抓取维基百科表格,所以我不保存为 csv。我只是直接从网站上绘制它。]

我的代码也在下面

URL="https://en.wikipedia.org/wiki/COVID19_pandemic_in_Nigeria"
html=requests.get(URL)
bsObj= BeautifulSoup(html.content, 'html.parser')

states= []
cases=[]
active=[]
recovered=[]
death=[]
for items in bsObj.find("table",{"class":"wikitable 
sortable"}).find_all('tr')[1:37]:
    data = items.find_all(['th',{"align":"left"},'td'])
    states.append(data[0].a.text)
    
    cases.append(data[1].b.text)
    active.append(data[2].text)
    recovered.append(data[3].text)
    death.append(data[4].text)


table= ["STATES","ACTIVE"]
tab= pd.DataFrame(list(zip(states,active)),columns=table)
tab["ACTIVE"]=tab["ACTIVE"].replace('\n','', regex=True)

x=tab["STATES"]
y=tab["ACTIVE"]

plt.cla()
plt.bar(x,y, color="green")
plt.xticks(fontsize= 5)
plt.yticks(fontsize= 8)
plt.title("PLOTTERSCA")
plt.show()

【问题讨论】:

  • 也提供表格。

标签: pandas dataframe matplotlib plot xticks


【解决方案1】:

没有数据很难说,但你可以试试这个对y轴上的值进行排序:

y.sort()
plt.bar(x,y, color="green")

【讨论】:

  • 我的帖子已被编辑。我实际上正在抓取网站并直接绘制表格
【解决方案2】:

条形图按其显示顺序绘制。在这种情况下,无需创建数据框。请尝试以下操作:

x=[s.replace('\n', '') for s in  states]
y=np.array(active)

order = np.argsort(y)

xNew = [x[i] for i in order]
yNew = y[order]

plt.cla()
plt.bar(xNew,yNew, color="green")
plt.xticks(fontsize= 5, rotation=90)
plt.yticks(fontsize= 8)
plt.title("PLOTTERSCA")
plt.show()

在这里,我们根据 y 值对所有内容进行了重新排序。此外,xticks 已经旋转,以便更容易看到...

【讨论】:

  • 我的帖子已被编辑。我实际上是在尝试直接从网站上绘制表格,而不是先将表格保存为 csv。
  • 仍然应该适用相同的逻辑。你真的尝试过这个建议吗?
猜你喜欢
  • 2020-03-29
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
相关资源
最近更新 更多