python – 用箭头标记matplotlib直方图bin
发布时间:2020-12-16 23:42:33 所属栏目:Python 来源:网络整理
导读:我有一个直方图,可以用下面的MWE复制: import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport numpy as nppd.Series(np.random.normal(0,100,1000)).plot(kind='hist',bins=50) 这创建了这样的情节: 那么我如何用给定整数的箭头
我有一个直方图,可以用下面的MWE复制:
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np pd.Series(np.random.normal(0,100,1000)).plot(kind='hist',bins=50) 这创建了这样的情节: 那么我如何用给定整数的箭头标记bin? 例如,见下文,其中箭头标记包含整数300的bin. 编辑:我应该理想地添加箭头的y坐标应该由它标记的条的高度自动设置 – 如果可能的话! 解决方法
您可以使用注释添加箭头:
import pandas as pd import matplotlib.pyplot as plt #import seaborn as sns import numpy as np fig,ax = plt.subplots() series = pd.Series(np.random.normal(0,1000)) series.plot(kind='hist',bins=50,ax=ax) ax.annotate("",xy=(300,5),xycoords='data',xytext=(300,20),textcoords='data',arrowprops=dict(arrowstyle="->",connectionstyle="arc3"),) 在这个例子中,我添加了一个从坐标(300,20)到(300,5)的箭头. 为了自动将箭头缩放到bin中的值,您可以使用matplotlib hist绘制直方图并获取值,然后使用numpy在哪里找到哪个bin对应于所需位置. import pandas as pd import matplotlib.pyplot as plt #import seaborn as sns import numpy as np nbins = 50 labeled_bin = 200 fig,ax = plt.subplots() series = pd.Series(np.random.normal(0,1000)) ## plot the histogram and return the bin position and values ybins,xbins,_ = ax.hist(series,bins=nbins) ## find out in which bin belongs the position where you want the label ind_bin = np.where(xbins >= labeled_bin)[0] if len(ind_bin) > 0 and ind_bin[0] > 0: ## get position and value of the bin x_bin = xbins[ind_bin[0]-1]/2. + xbins[ind_bin[0]]/2. y_bin = ybins[ind_bin[0]-1] ## add the arrow ax.annotate("",xy=(x_bin,y_bin + 5),xytext=(x_bin,y_bin + 20),) else: print "Labeled bin is outside range" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |