gpt4 book ai didi

python - 直接在图表上可视化 matplotlib 直方图 bin 计数

转载 作者:行者123 更新时间:2023-11-30 22:23:35 24 4
gpt4 key购买 nike

我想我有一个简单的问题,但我看不到任何有用的博客来展示如何实现这一目标。我有一个名为“series”的Python pandas 系列,我使用series.hist() 来可视化直方图。我需要直接在图表上可视化每个垃圾箱的出现次数,但我找不到解决方案。

如何在每个垃圾箱顶部看到一个显示每个垃圾箱出现次数的标签?

准确地说,这是我的代码:

import matplotlib.pyplot as plt
your_bins=10
data = [df_5m_9_4pm.loc['2017-6']['sum_daily_cum_ret'].values]
plt.hist(data, binds = your_bins)
arr = plt.hist(data,bins = your_bins)
for i in range(your_bins):
plt.text(arr[1][i],arr[0][i],str(arr[0][i]))

如果我只是打印变量“data”,它就是这样的:

[array([ 0.        ,  0.03099187, -0.00417244, ..., -0.00459067,
0.0529476 , -0.0076605 ])]

如果我运行上面的代码,我会收到错误消息:

---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-97-917078981b1d> in <module>()
2 your_bins=10
3 data = [df_5m_9_4pm.loc['2017-6']['sum_daily_cum_ret'].values]
----> 4 plt.hist(data, binds = your_bins)
5 arr = plt.hist(data,bins = your_bins)
6 for i in range(your_bins):

~/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py in hist(x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, normed, hold, data, **kwargs)
3002 histtype=histtype, align=align, orientation=orientation,
3003 rwidth=rwidth, log=log, color=color, label=label,
-> 3004 stacked=stacked, normed=normed, data=data, **kwargs)
3005 finally:
3006 ax._hold = washold

~/anaconda3/lib/python3.6/site-packages/matplotlib/__init__.py in inner(ax, *args, **kwargs)
1708 warnings.warn(msg % (label_namer, func.__name__),
1709 RuntimeWarning, stacklevel=2)
-> 1710 return func(ax, *args, **kwargs)
1711 pre_doc = inner.__doc__
1712 if pre_doc is None:

~/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py in hist(***failed resolving arguments***)
6205 # this will automatically overwrite bins,
6206 # so that each histogram uses the same bins
-> 6207 m, bins = np.histogram(x[i], bins, weights=w[i], **hist_kwargs)
6208 m = m.astype(float) # causes problems later if it's an int
6209 if mlast is None:

~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py in histogram(a, bins, range, normed, weights, density)
665 if mn > mx:
666 raise ValueError(
--> 667 'max must be larger than min in range parameter.')
668 if not np.all(np.isfinite([mn, mx])):
669 raise ValueError(

ValueError: max must be larger than min in range parameter.

最佳答案

试试这个:

import matplotlib.pyplot as plt              
import numpy as np


x = np.random.normal(size = 1000)
counts, bins, patches = plt.hist(x, normed=True)
plt.ylabel('Probability')

# Label the raw counts and the percentages below the x-axis...
bin_centers = 0.5 * np.diff(bins) + bins[:-1]
for count, x in zip(counts, bin_centers):
# Label the raw counts
plt.annotate('{:.2f}'.format(count), xy=(x, 0), xycoords=('data', 'axes fraction'),
xytext=(0, 18), textcoords='offset points', va='top', ha='center')

plt.show()

Labeled bins

如果您想要原始出现次数而不是频率,只需删除 normed=True 并可能更改格式字符串。

我可能会补充一点,您也可以通过基本上复制 the question linked in the sidebar 中的代码来解决这个问题。并将 (0, -18) 更改为 (0, 18)

关于python - 直接在图表上可视化 matplotlib 直方图 bin 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com