Добавьте метки x и y в график pandas
Предположим, у меня есть следующий код, который строит что-то очень простое с помощью панд:
import pandas as pd
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'],
index=['Index 1', 'Index 2'])
df2.plot(lw=2, colormap='jet', marker='.', markersize=10,
title='Video streaming dropout by category')
![Output]()
Как мне легко установить x и y-метки, сохраняя при этом мою способность использовать определенные цветовые карты? Я заметил, что обертка plot()
для панд DataFrames не принимает никаких специфических для этого параметров.
Ответы
Ответ 1
Функция df.plot()
возвращает объект matplotlib.axes.AxesSubplot
. Вы можете установить метки для этого объекта.
In [4]: ax = df2.plot(lw=2, colormap='jet', marker='.', markersize=10, title='Video streaming dropout by category')
In [6]: ax.set_xlabel("x label")
Out[6]: <matplotlib.text.Text at 0x10e0af2d0>
In [7]: ax.set_ylabel("y label")
Out[7]: <matplotlib.text.Text at 0x10e0ba1d0>
![enter image description here]()
Или, более кратко: ax.set(xlabel="x label", ylabel="y label")
.
Кроме того, метка оси x индекса автоматически устанавливается на имя индекса, если оно есть. поэтому df2.index.name = 'x label'
тоже будет работать.
Ответ 2
Вы можете использовать сделать это так:
import matplotlib.pyplot as plt
import pandas as pd
plt.figure()
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'],
index=['Index 1', 'Index 2'])
df2.plot(lw=2, colormap='jet', marker='.', markersize=10,
title='Video streaming dropout by category')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.show()
Очевидно, вы должны заменить строки "xlabel" и "ylabel" тем, что вы хотите, чтобы они были.
Ответ 3
Если вы пометите столбцы и индекс вашего DataFrame, pandas автоматически предоставит соответствующие метки:
import pandas as pd
values = [[1, 2], [2, 5]]
df = pd.DataFrame(values, columns=['Type A', 'Type B'],
index=['Index 1', 'Index 2'])
df.columns.name = 'Type'
df.index.name = 'Index'
df.plot(lw=2, colormap='jet', marker='.', markersize=10,
title='Video streaming dropout by category')
![enter image description here]()
В этом случае вам все равно придется plt.ylabel
y-метки вручную (например, через plt.ylabel
как показано в других ответах).
Ответ 4
Можно установить обе метки вместе с функцией axis.set
. Посмотрите пример:
import pandas as pd
import matplotlib.pyplot as plt
values = [[1,2], [2,5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2'])
ax = df2.plot(lw=2,colormap='jet',marker='.',markersize=10,title='Video streaming dropout by category')
# set labels for both axes
ax.set(xlabel='x axis', ylabel='y axis')
plt.show()
![введите описание изображения здесь]()
Ответ 5
В случаях, когда вы используете pandas.DataFrame.hist
:
plt = df.Column_A.hist(bins=10)
Обратите внимание, что вы получаете ARRAY сюжетов, а не сюжет. Таким образом, чтобы установить метку x, вам нужно будет сделать что-то вроде этого
plt[0][0].set_xlabel("column A")
Ответ 6
pandas
использует matplotlib
для основных dataframe участков. Таким образом, если вы используете pandas
для основного графика, вы можете использовать matplotlib для настройки графика. Тем не менее, я предлагаю альтернативный метод с использованием seaborn
который позволяет больше настраивать сюжет, не вдаваясь в базовый уровень matplotlib
.
Рабочий код:
import pandas as pd
import seaborn as sns
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'],
index=['Index 1', 'Index 2'])
ax= sns.lineplot(data=df2, markers= True)
ax.set(xlabel='xlabel', ylabel='ylabel', title='Video streaming dropout by category')
![enter image description here]()
Ответ 7
что насчет...
import pandas as pd
import matplotlib.pyplot as plt
values = [[1,2], [2,5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2'])
(df2.plot(lw=2,colormap='jet', marker='.', markersize=10, title='Video streaming dropout by category')
.set(xlabel='x axis', ylabel='y axis')
)
plt.show()