我的數據由多種波動率值組成,即0到1之間的小數。現在,只有6%和24%之間的值特別相關,因此我試圖構建一個直方圖來顯示相對計數這些價值。我想要一個直方圖,它具有0-6%,6-8%,... 22-24%,> 24%的分箱,但這證明是非常困難的。總共應該有11個垃圾箱,垃圾箱的標籤應該位於垃圾箱下方。 y軸不能有任何標籤,因爲只有相對計數很重要,並且包括y軸上的值會降低我試圖強調的相對性。如何在Matplotlib中手動指定垃圾箱?
我已經瘋狂接近能夠通過閱讀答案,如Matplotlib xticks not lining up with histogram和Bin size in Matplotlib (Histogram)。
如果有人能幫我解決這個問題,我會非常感激。感謝您的幫助。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.path as path
graph1, ax = plt.subplots()
n, bins = np.histogram(values, 11)
left = np.array(bins[:-1])
right = np.array(bins[1:])
bottom = np.zeros(len(left))
top = bottom + n
XY = np.array([[left, left, right, right], [bottom, top, top, bottom]]).T
barpath = path.Path.make_compound_path_from_polys(XY)
patch = patches.PathPatch(barpath, facecolor="blue", edgecolor="#FFFFFF",
alpha = 0.75)
ax.add_patch(patch)
ax.set_xlim(left[0], right[-1])
ax.set_ylim(bottom.min(), top.max())
graph1.suptitle("1-Year Rolling Volatilities")
ax.axes.get_yaxis().set_visible(False)
plt.show()
這幾乎產生正確的直方圖,但桶是不是我想要的時間間隔內,xticks不集中,並沒有對每個箱一個標籤。
您需要顯示一些代碼並解釋輸出與所需內容的不同之處。 – BrenBarn
我認爲我使用的代碼與我實際需要的代碼相距太遠。我主動選擇不發佈代碼,因爲我不希望有人按照我已經使用過的方式工作。如果你真的認爲我應該包括我的代碼,我會發布它,但我想要一個全新的解決方案,而不是對我已有的東西的調整。我不喜歡我用過的方法,新的解決方案只能比我的方法更好 –
不,你不是想發佈*你的*代碼,而是問題的[mcve]。 – ImportanceOfBeingErnest