Нанесение значений столбца над ним на график. Может ли кто-нибудь рассказать мне, как это сделать? Спасибо - PullRequest
0 голосов
/ 17 июня 2020
from matplotlib import pyplot as plt
import pandas as pd

df = pd.DataFrame(ItemTrack, columns=['Items Taken'])
df.insert(1, "Expenditure", ExpenseTrack, True)
df['Items Taken'] = df['Items Taken'].str.capitalize()
print(df)
x = df['Items Taken']
y = df['Expenditure']
plt.bar(x, y)
plt.xticks(rotation=30, color='green')
plt.yticks(rotation=30, color='red')
plt.show()

Ответы [ 2 ]

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

Попробуйте использовать ax.text () и l oop вместо координат.

Установите аргумент ключевого слова transform в ax.transData, чтобы передаваемые координаты соответствовали данные в вашей оси. в качестве альтернативы вы можете использовать ax.transAxes или fig.transFigure.

fig = plt.figure()
ax = plt.axes()

ax.bar(x, y)

# assuming that the you want the y value above the bar
offset_y = 2 # offset to place the text above the bar. Chosen number here is arbitrary 

for i range(x):
    ax.text(i, y[i]+offset_y, y[i], 
            va='center',
            ha='center',
            transform=ax.transData
    )

ax.set_xticks(rotation=30, color='green')
ax.set_yticks(rotation=30, color='red')

plt.show()

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

Вот go:

from matplotlib import pyplot as plt
import pandas as pd

df = pd.DataFrame({
    'Items Taken': [f'Item {i}' for i in range(5)],
    'Expenditure' : [i * 100 for i in range(5)]
})
df['Items Taken'] = df['Items Taken'].str.capitalize()
x = df['Items Taken']
y = df['Expenditure']
plt.bar(x, y)
plt.xticks(rotation=30, color='green')
plt.yticks(rotation=30, color='red')
for i, v in enumerate(y):
    plt.text(i, v, str(v), color='red', ha='center', fontweight='bold')
plt.show()

Output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...