числа в оси y не упорядочены в matplotlib - PullRequest
0 голосов
/ 21 июня 2020

[числа по оси 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()

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Гистограммы отображаются в том порядке, в котором они представлены. В этом случае нет необходимости создавать фрейм данных. Попробуйте следующее:

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 были повернуты, чтобы их было легче увидеть ...

0 голосов
/ 21 июня 2020

Без данных сложно сказать, но вы можете попробовать отсортировать значения по оси y так:

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