मेरे पास नीचे के रूप में एक नमूना स्टैक्ड बार चार है। मैं चार्ट में "0" मानों को कैसे दबा सकता हूं?

जहां भी मेरे पास 0 है, मैं मान प्रदर्शित नहीं करना चाहता हूं। क्या कोई तरीका है जिससे मैं शून्य को दबा सकूंयहां छवि विवरण दर्ज करें

डेटा प्रदर्शित करते समय मेरे पास कोड नीचे है

for xpos, ypos, yval in zip(TABLE_NAMES, ID1/2, ID1):
    plt.text(xpos, ypos, yval, ha="center", va="center",fontsize=20)
for xpos, ypos, yval in zip(TABLE_NAMES, ID1+ID2/2, ID2):
    plt.text(xpos, ypos, yval, ha="center", va="center",fontsize=20)

मैंने नीचे दिए गए तरीकों की कोशिश की है:

ID1[ID1 == 0] = np.nan ( to pass nan value but i am getting error 
Error: ValueError: cannot convert float NaN to integer

क्या कोई रास्ता है जिससे मैं हासिल कर सकता हूं

और डेटा के अनुसार प्रदर्शित करने के लिए वाई अक्ष कैसे बना सकते हैं (नीचे दी गई छवि के अनुसार मेरे पास वाई अक्ष पर 6 तक है। और मैं इसके लिए np.arange का उपयोग करता हूं।

np.arange(0,6,1) 

लेकिन भविष्य में मेरे पास 100 से अधिक मूल्य हो सकते हैं। np.arange जैसे किसी भी फ़ंक्शन को निर्दिष्ट किए बिना किसी भी तरह से मैं इसे बिना किसी सीमा के yaxis को संभालने के लिए गतिशील रूप से पास कर सकता हूं ..?

3
Ravi 8 सितंबर 2019, 21:12

1 उत्तर

सबसे बढ़िया उत्तर

चूंकि आयत पैच पहले ही उत्पन्न हो चुके हैं, हम केवल प्लॉट से ऊँचाई और चौड़ाई प्राप्त कर सकते हैं और उनके आधार पर टेक्स्ट जोड़ सकते हैं:

In [164]: df
Out[164]: 
          a         b         c         d
0  0.807540  0.719843  0.291329  0.928670
1  0.449082  0.000000  0.575919  0.299698
2  0.703734  0.626004  0.582303  0.243273
3  0.363013  0.539557  0.000000  0.743613
4  0.185610  0.526161  0.795284  0.929223
5  0.000000  0.323683  0.966577  0.259640
6  0.000000  0.386281  0.000000  0.000000
7  0.500604  0.131910  0.413131  0.936908
8  0.992779  0.672049  0.108021  0.558684
9  0.797385  0.199847  0.329550  0.605690

In [165]:
from matplotlib.patches import Rectangle
df.plot.bar(stacked=True)
ax = plt.gca()
for p in ax.get_children()[:-1]:  # skip the last patch as it is the background
    if isinstance(p, Rectangle):
        x, y = p.get_xy()
        w, h = p.get_width(), p.get_height()
        if h > 0:  # anything that have a height of 0 will not be annotated
            ax.text(x + 0.5 * w, y + 0.5 * h, '%0.2f'%h, va='center', ha='center')
plt.show()

enter image description here

2
CT Zhu 9 सितंबर 2019, 05:44