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
2 Answers
Reset to default 2Or 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()