【发布时间】:2014-10-30 16:12:02
【问题描述】:
我有以下直方图:
现在,我相信你们中的许多人会向我指出 matplotlib 库和其他资源的方向,但由于某种原因,我想到的以及随后从各种不同来源读取的内容并不完全奏效用我的轴直方图。 (如果我错了,请纠正我!)
我的问题是这样的:
如何从覆盖在 (2,2,1) 和 (2,2,4) 图中的直方图上的线拆分位置填充直方图。
x 直方图(位置 2、2、1)的 vline 绘制在 x = -0.222 处,y 直方图的 hline 绘制在 y = 0.49 处。
一个示例工作代码,仅针对原始数组中的任何数组进行修改,如下所示:
import numpy as np
import scipy
import matplotlib as mpl
import matplotlib.pyplot as plt
import pylab
X = 0.32, 0.41, 0.45, 0.53, -0.23, 0.34, 0.35, 0.47, 0.48, 0.33, 0.49, -0.10, -0.23, 0.45, 0.19
Y = 0.56, 0.67, 0.49, 0.61, 0.00, -0.02, -0.12, 0.12, 0.23, 0.44, 0.56, 0.13, 0.56, 0.67, 0.28
binsize = 0.1
min_x_data, max_x_data = np.min(X), np.max(X)
num_x_bins = np.floor((max_x_data - min_x_data) / binsize)
min_y_data, max_y_data = np.min(Y), np.max(Y)
num_y_bins = np.floor((max_y_data - min_y_data) / bin size)
fig = plt.figure(221)
axScatter = fig.add_subplot(223)
axScatter.scatter(X, Y)
axScatter.set_xlim(-2.0, 1.5)
axScatter.set_ylim(-2.0, 2.5)
axHistX = fig.add_subplot(221)
axHistX.set_xlim(-2.0, 1.5)
axHistX.set_ylim(0, 10)
axHistY = fig.add_subplot(224)
axHistY.set_xlim(0, 10)
axHistY.set_ylim(-2.0, 2.5)
axHistX.hist(X, num_x_bins, ec='0.3', fc='none', histtype='step')
axHistY.hist(Y, num_y_bins, ec='0.3', fc='none', histtype='step', orientation='horizontal')
axScatter.axhline(y=0.49, xmin=0, xmax=1, linestyle='-.',c='k')
axScatter.axvline(x=-0.222, ymin=0, ymax=1, linestyle='-.',c='k')
axHistX.axvline(x=-0.222, ymin=0, ymax=1, linestyle='-.',c='k')
axHistY.axhline(y=0.49, xmin=0, xmax=1, linestyle='-.',c='k')
plt.show()
【问题讨论】:
-
请提供您的代码的最小工作示例。
-
有点困难,因为我的数据是 csv 文件,而且 BPT 图本身非常复杂。任何让我入门的通用/通用/适应性示例都可以。
-
如果您可以简单地制作随机数据(我假设您使用的是 numpy,所以
np.random会这样做)并提供代码。它让您更加更容易为您提供帮助,否则人们将不得不花费 20 分钟来让子图看起来与您的大致相似,然后才能编写阴影部分。 -
好的。我现在就这样做。
标签: python matplotlib histogram astronomy