我正在使用 Pandas 制作一个非常简单的直方图
results.val1.hist(bins=120)
可以正常工作,但是我真的很想在y轴上有一个对数刻度,我通常(可能是错误地)这样做:

fig = plt.figure(figsize=(12,8))
ax = fig.add_subplot(111)
plt.plot(np.random.rand(100))
ax.set_yscale('log')
plt.show()

如果我用pandas命令替换plt命令,那么我有:
fig = plt.figure(figsize=(12,8))
ax = fig.add_subplot(111)
results.val1.hist(bins=120)
ax.set_yscale('log')
plt.show()

导致同一错误的许多副本:
Jan  9 15:53:07 BLARG.local python[6917] <Error>: CGContextClosePath: no current point.

我确实得到了对数刻度直方图,但是它只有条形图的顶线,没有垂直条形或颜色。是在做一些可怕的错误,还是 Pandas 不支持这样做?

从Paul H的代码中,我在bottom=0.1调用中添加了hist来解决该问题,我想这是除以零的某种东西。

最佳答案

没有任何数据很难诊断。以下对我有用:

import numpy as np
import matplotlib.pyplot as plt
import pandas
series = pandas.Series(np.random.normal(size=2000))
fig, ax = plt.subplots()
series.hist(ax=ax, bins=100, bottom=0.1)
ax.set_yscale('log')

此处的关键是将ax传递给直方图函数,并指定bottom,因为对数刻度上没有零值。

关于python - Python Pandas 直方图对数刻度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21033720/

10-12 20:58