最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

python - Sorting axis in pandas plot - Stack Overflow

programmeradmin5浏览0评论

How can I sort the axis in descending order? I tried the following and it did not work:

from io import BytesIO
from fpdf import FPDF
import pandas as pd
import matplotlib.pyplot as plt
import io

DATA = {
    'x': ['val_1', 'val_2', 'val_3', 'val_4', 'val_5'],
    'y': [1, 2, 3, 4, 5]
}

COLUMNS = tuple(DATA.keys())

plt.figure()
df = pd.DataFrame(DATA, columns=COLUMNS)
df.sort_values(['y'], ascending=[False]).plot(x=COLUMNS[0], y=COLUMNS[1], kind="barh", legend=False)

img_buf = BytesIO()
plt.savefig(img_buf, dpi=200)

pdf = FPDF()
pdf.add_page()
pdf.image(img_buf, w=pdf.epw)
pdf.output('output.pdf')
img_buf.close()

How can I sort the axis in descending order? I tried the following and it did not work:

from io import BytesIO
from fpdf import FPDF
import pandas as pd
import matplotlib.pyplot as plt
import io

DATA = {
    'x': ['val_1', 'val_2', 'val_3', 'val_4', 'val_5'],
    'y': [1, 2, 3, 4, 5]
}

COLUMNS = tuple(DATA.keys())

plt.figure()
df = pd.DataFrame(DATA, columns=COLUMNS)
df.sort_values(['y'], ascending=[False]).plot(x=COLUMNS[0], y=COLUMNS[1], kind="barh", legend=False)

img_buf = BytesIO()
plt.savefig(img_buf, dpi=200)

pdf = FPDF()
pdf.add_page()
pdf.image(img_buf, w=pdf.epw)
pdf.output('output.pdf')
img_buf.close()
Share Improve this question edited 23 hours ago simon 5,2481 gold badge15 silver badges28 bronze badges asked yesterday smpa01smpa01 4,3363 gold badges17 silver badges29 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 2

Or just change ascending = [False] to ascending = [True]:

import pandas as pd
import matplotlib.pyplot as plt

DATA = {
    'x': ['val_1', 'val_2', 'val_3', 'val_4', 'val_5'],
    'y': [1, 2, 3, 2.5, 0.5]
}

COLUMNS = tuple(DATA.keys())


df = pd.DataFrame(DATA, columns=COLUMNS)
df.sort_values(['y'], ascending=[True]).plot(x=COLUMNS[0], y=COLUMNS[1], kind="barh", legend=False)

plt.show()

You can try matplotlib.axes.Axes.invert_yaxis

plt.gca().invert_yaxis()

or for x axis

plt.gca().invert_xaxis()

The code

from io import BytesIO
import pandas as pd
import matplotlib.pyplot as plt

DATA = {
    'x': ['val_1', 'val_2', 'val_3', 'val_4', 'val_5'],
    'y': [1, 2, 3, 4, 5]
}
COLUMNS = tuple(DATA.keys())

plt.figure()
df = pd.DataFrame(DATA, columns=COLUMNS)

df_sorted = df.sort_values(['y'], ascending=[False]).reset_index(drop=True)

df_sorted.plot(x=COLUMNS[0], y=COLUMNS[1], kind="barh", legend=False)

img_buf = BytesIO()
plt.gca().invert_xaxis()

plt.show()

The graph plt.gca().invert_xaxis()

The graph plt.gca().invert_yaxis()

发布评论

评论列表(0)

  1. 暂无评论