在這個問題之后:帶有多個標簽的條形圖。我試圖用水平條形圖復制代碼。我想知道如何洗掉/隱藏沒有資料的標簽。
所以代替這個:
看起來更像這樣:
我附上下面的代碼。
如果有人能在這里引導我朝著正確的方向前進,我將不勝感激。先感謝您。
干杯
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np
df = pd.DataFrame(
{"DEPARTMENT": ["Accounting", "Administration", "Finance", "Finance", "Human resources", "IT", "Marketing", "R&D"], "DATE": ["June", "June", "July", "June", "June","June","June","June"], "COUNT": [10, 33, 16, 23, 3, 3, 5, 9]}
)
test=pd.pivot_table(df, values='COUNT', index='DATE',columns='DEPARTMENT',
aggfunc=np.sum)
fig=plt.figure(dpi=300)
ax=test.plot(kind='barh',color=['#4472C4'], legend=False)
ax = plt.gca()
pos = []
for bar in ax.patches:
pos.append(bar.get_y() bar.get_height()/2.)
ax.set_yticks(pos,minor=True)
lab = []
for i in range(len(pos)):
l = test.columns.values[i//len(test.index.values)]
lab.append(l)
ax.set_yticklabels(lab,minor=True)
ax.tick_params(axis='y', which='major', pad=120, size=0)
plt.setp(ax.get_xticklabels(), rotation=0)
plt.show()
plt.close()
uj5u.com熱心網友回復:
我編輯了您的代碼以檢查每個單元格值是否nan在創建標簽時。
如果單元格值是nan,則標簽值設定為空字串,如果單元格值不是nan,則使用真正的標簽。
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np
df = pd.DataFrame(
{"DEPARTMENT": ["Accounting", "Administration", "Finance", "Finance", "Human resources", "IT", "Marketing", "R&D"], "DATE": ["June", "June", "July", "June", "June","June","June","June"], "COUNT": [10, 33, 16, 23, 3, 3, 5, 9]}
)
test=pd.pivot_table(df, values='COUNT', index='DATE',columns='DEPARTMENT',
aggfunc=np.sum)
fig=plt.figure(dpi=300)
ax=test.plot(kind='barh',color=['#4472C4'], legend=False)
ax = plt.gca()
pos = []
for bar in ax.patches:
pos.append(bar.get_y() bar.get_height()/2.)
ax.set_yticks(pos,minor=True)
lab = []
#EDITED FROM HERE
arr = []
for i in range(len(test.iloc[0].values)):
arr.append(test.iloc[0].values[i])
arr.append(test.iloc[1].values[i])
for i in range(len(pos)):
l = test.columns.values[i//len(test.index.values)]
val = arr[i]
if np.isnan(val):
lab.append("")
else:
lab.append(l)
#TO HERE
ax.set_yticklabels(lab,minor=True)
ax.tick_params(axis='y', which='major', pad=120, size=0)
plt.setp(ax.get_xticklabels(), rotation=0)
plt.show()
plt.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424622.html
標籤:Python 熊猫 matplotlib 阴谋
上一篇:繪制每組分類值的條形圖
