[英]Pandas Merge a Grouped-by dataframe with another dataframe for each group
[英]How can I change the group titles in a pandas grouped-by boxplot?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(10, 3),
columns=['Col1', 'Col2', 'Col3'])
df['X'] = pd.Series(['A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B'])
df['Y'] = pd.Series(['A', 'B', 'A', 'B', 'A',
'B', 'A', 'B', 'A', 'B'])
boxplot = df.boxplot(column=['Col1', 'Col2'], by=['X', 'Y'])
plt.show()
我想更改兩個標簽Col1
和Col2
,我試圖傳遞參數labels=['Left label','Right label']
(到 matplotlib 核心函數https://matplotlib.org/api/_as_gen/ matplotlib.pyplot.boxplot.html#matplotlib.pyplot.boxplot )但沒有運氣:
boxplot = df.boxplot(column=['Col1', 'Col2'], by=['X', 'Y'], labels=['Left label','Right label'])
給我錯誤:
ValueError: Dimensions of labels and X must be compatible
試試這個,因為這里的 boxplot 返回一個 NumPy 軸數組,你可以使用這個 NumPy 數組的每個元素和 set_title:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(10, 3),
columns=['Col1', 'Col2', 'Col3'])
df['X'] = pd.Series(['A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B'])
df['Y'] = pd.Series(['A', 'B', 'A', 'B', 'A',
'B', 'A', 'B', 'A', 'B'])
ax = df.boxplot(column=['Col1', 'Col2'], by=['X', 'Y'])
ax[0].set_title('AAA')
ax[1].set_title('BBB')
plt.show()
你不妨試試:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(10, 3),
columns=['Col1', 'Col2', 'Col3'])
df['X'] = pd.Series(['A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B'])
df['Y'] = pd.Series(['A', 'B', 'A', 'B', 'A',
'B', 'A', 'B', 'A', 'B'])
axes = df.boxplot(column=['Col1', 'Col2'], by=['X', 'Y'])
titles=['Left label','Right label']
for ax, title in zip(axes,titles):
ax.set_title(title)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.