Tôi đã sửa đổi ví dụ scatter_hist.py được tìm thấy here để có hai tập dữ liệu được vẽ.matplotlib scatter_hist với histiptpe stepfilled trong biểu đồ
Tôi muốn có biểu đồ với loại "stepfilled", nhưng bằng cách nào đó nếu tôi đặt loại "stepfilled" biểu đồ trục Y (orientation = "horizontal") không hoạt động.
Có cách nào khác để làm biểu đồ trông giống như kiểu "stepfilled" hay tôi đang làm gì đó sai?
Đây là mã của tôi với histtype = "bar" để hiển thị ý tưởng những gì tôi cố gắng làm. Thay đổi nó để
histtype="stepfilled"
để có được biểu đồ kỳ lạ:
import numpy as np
import matplotlib.pyplot as plt
# the random data
x = np.random.randn(1000)
y = np.random.randn(1000)
x_vals = [x]
y_vals = [y]
x_vals.append(np.random.randn(300))
y_vals.append(np.random.randn(300))
fig = plt.figure(1, figsize=(5.5,5.5))
from mpl_toolkits.axes_grid1 import make_axes_locatable
colour_LUT = ['#0000FF',
'#00FF00']
# the scatter plot:
xymax = np.max(np.fabs(x))
colors = []
axScatter = plt.subplot(111)
for i in range(len(x_vals)):
colour = colour_LUT[i]
xymax = np.max([np.max(np.fabs(x)), np.max(np.fabs(y)), xymax ])
axScatter.scatter(x_vals[i], y_vals[i], color = colour)
colors.append(colour)
axScatter.set_aspect(1.)
# create new axes on the right and on the top of the current axes
# The first argument of the new_vertical(new_horizontal) method is
# the height (width) of the axes to be created in inches.
divider = make_axes_locatable(axScatter)
axHistx = divider.append_axes("top", 1.2, pad=0.1, sharex=axScatter)
axHisty = divider.append_axes("right", 1.2, pad=0.1, sharey=axScatter)
# make some labels invisible
plt.setp(axHistx.get_xticklabels() + axHisty.get_yticklabels(),
visible=False)
# now determine nice limits by hand:
binwidth = 0.25
lim = (int(xymax/binwidth) + 1) * binwidth
bins = np.arange(-lim, lim + binwidth, binwidth)
histtype = "bar"
axHistx.hist(x_vals, bins=bins, histtype= histtype, color=colors)
axHisty.hist(y_vals, bins=bins, orientation='horizontal',histtype= histtype, color=colors)
# the xaxis of axHistx and yaxis of axHisty are shared with axScatter,
# thus there is no need to manually adjust the xlim and ylim of these
# axis.
#axHistx.axis["bottom"].major_ticklabels.set_visible(False)
for tl in axHistx.get_xticklabels():
tl.set_visible(False)
axHistx.set_yticks([0, 50, 100])
#axHisty.axis["left"].major_ticklabels.set_visible(False)
for tl in axHisty.get_yticklabels():
tl.set_visible(False)
axHisty.set_xticks([0, 50, 100])
plt.draw()
plt.show()
cảm ơn sự giúp đỡ!
Edit:
Dưới đây là những hình ảnh mà tôi nhận được trong cửa sổ môi trường với matplotlib 1.0.0. Với histtype = "thanh" Tôi có điều này:
bar histogram image http://i54.tinypic.com/wunjoi.png và với histtype = "stepfilled" Tôi có điều này:
stepfilled histogram image http://oi56.tinypic.com/rstu1j.jpg
Cảm ơn bạn đã trả lời Henning. Phiên bản matplotlib của bạn là gì và bạn có đang chạy nó trên các cửa sổ không? – Tedmu
Tôi đang chạy phiên bản matplotlib 1.0.0 trong python 2.6.6 trên windows 7 – Henning