ast*_*max 3 python matplotlib histogram scatter-plot
我正在尝试使用Matplotlib的2d散点图函数绘制一些数据,同时在x和y轴上生成投影直方图.我发现的例子来自matplotlib图片库(pylab_examples示例代码:scatter_hist.py).
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import NullFormatter
# the random data
x = np.random.randn(1000)
y = np.random.randn(1000)
nullfmt = NullFormatter() # no labels
# definitions for the axes
left, width = 0.1, 0.65
bottom, height = 0.1, 0.65
bottom_h = left_h = left+width+0.02
rect_scatter = [left, bottom, width, height]
rect_histx = [left, bottom_h, width, 0.2]
rect_histy = [left_h, bottom, 0.2, height]
# start with a rectangular Figure
plt.figure(1, figsize=(8,8))
axScatter = plt.axes(rect_scatter)
axHistx = plt.axes(rect_histx)
axHisty = plt.axes(rect_histy)
# no labels
axHistx.xaxis.set_major_formatter(nullfmt)
axHisty.yaxis.set_major_formatter(nullfmt)
# the scatter plot:
axScatter.scatter(x, y)
# now determine nice limits by hand:
binwidth = 0.25
xymax = np.max( [np.max(np.fabs(x)), np.max(np.fabs(y))] )
lim = ( int(xymax/binwidth) + 1) * binwidth
axScatter.set_xlim( (-lim, lim) )
axScatter.set_ylim( (-lim, lim) )
bins = np.arange(-lim, lim + binwidth, binwidth)
axHistx.hist(x, bins=bins)
axHisty.hist(y, bins=bins, orientation='horizontal')
axHistx.set_xlim( axScatter.get_xlim() )
axHisty.set_ylim( axScatter.get_ylim() )
plt.show()
Run Code Online (Sandbox Code Playgroud)
唯一的问题是该示例不起作用.我收到以下错误:
~$ python ~/Desktop/scatter_and_hist.py
Traceback (most recent call last):
File "/Users/username/Desktop/scatter_and_hist.py", line 45, in <module>
axHisty.hist(y, bins=bins, orientation='horizontal')
File "//anaconda/lib/python2.7/site-packages/matplotlib/axes.py", line 8180, in hist
color=c, bottom=bottom)
TypeError: barh() got multiple values for keyword argument 'bottom'
Run Code Online (Sandbox Code Playgroud)
我已经完成了代码并解决了问题.这是导致问题的第45行(axHisty.hist(y,bins = bins,orientation ='horizontal')).在图像库中看到你想要的情节是如此令人沮丧,但让这个例子不起作用.第二组眼睛将不胜感激!
您已经在v1.2.1中遇到了一个错误(https://github.com/matplotlib/matplotlib/pull/1985).你可以升级你的matplotlib,猴子修补你的版本与错误修复,或使用np.histogram
和调用自己barh
的正确的参数顺序.
作为旁注,此问题所需的唯一代码是:
x = np.random.rand(100)
plt.hist(x, orientation='horizontal')
plt.show()
Run Code Online (Sandbox Code Playgroud)
你发布的其他一切都是噪音.