当前位置: 首页 > 知识库问答 >
问题:

如何在Matplotlib中手动指定箱子?[副本]

秦宏盛
2023-03-14

我的数据由各种波动率值组成,即0到1之间的十进制数。现在,只有6%到24%之间的值才是特别相关的,所以我试图构建一个直方图来显示这些值的相对计数。我想要一个包含0-6%、6-8%、…22-24%、,

我已经疯狂地接近能够通过阅读答案来做到这一点,例如垫迹xticks与直方图和垫迹(直方图)中的Bin大小不对齐。

如果有人能帮我解决这个问题,我将不胜感激。谢谢你的帮助。

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没有居中,每个垃圾箱也没有一个标签。

共有1个答案

薛弘济
2023-03-14
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.path as path

graph1, ax = plt.subplots()

values = [0.15, 0.23, 0.061, 0.085, 0.06, 0.09, 0.07, 0.05, 0.04, 0.08]
#n, bins = np.histogram(values, 11)
plt.hist(values, bins=[0, 0.06, 0.08, 0.22, 0.24, 1.00])

您也可以使用类似的东西来设置箱子下的勾号。有关在此堆栈溢出处设置刻度的更多信息 Matplotlib - 标记每个箱

 类似资料:
  • 我知道拳击是怎么做的。例如,当你写 Integer 时,正在调用 同样,我也可以看到拆箱的实现代码吗? 更新:在建议的问题中得到了回答。

  • 我用matplotlib生成直方图。 我需要箱子的宽度不相等,因为我对最低的条柱最感兴趣。现在我正在这样做: 这创建了我想要的(前5个条柱的宽度为10,其余50条箱的宽度),但前五个条柱当然比后一个条柱窄,因为所有条柱都显示在同一轴上。 有没有办法影响x轴或直方图本身,这样我就可以在前5个箱之后打破刻度,这样所有箱都显示为等宽? (我意识到这将产生一个扭曲的视图,我对此很好,尽管我不介意在轴的两个

  • 问题内容: 为什么第二段代码更快? 问题答案: 自动装箱使用,内部将Integer对象缓存为小整数(默认情况下为-128至127,但是最大值可以使用“ java.lang.Integer.IntegerCache.high”属性进行配置-请参见Integer.valueOf的源代码) ,因此与直接调用不同。因为在调用之前可以快速检查整数值的大小,所以直接调用要快一些(尽管如果您有很多小整数,它会使

  • 我使用matplotlib在python中绘制直方图,方法是: 是否可以打印包含所有存储箱信息的数据框,如每个存储箱中的元素数量?

  • 我正在使用Spring/Spring数据JPA,发现自己需要在单元测试中手动强制提交。我的用例是,我正在做一个多线程测试,在这个测试中,我必须使用在生成线程之前持久化的数据。 不幸的是,鉴于测试在事务中运行,即使是也无法让生成的线程访问它。 我曾尝试使用实体管理器来执行以下操作,但执行此操作时会收到错误消息: 有什么方法可以提交事务并继续它吗?我找不到任何允许调用提交()的方法。

  • 我使用的是OrientDB 2.1.8社区和内置的Lucene索引。如何在手动索引中定义在搜索过程中要使用的字段?即。按照文档中使用多个字段页面中描述的方式使用手动索引? 下面是一个简短的例子来展示我正在努力做的事情。