我有一个矩阵A(20374,1)。 我想使用这些数据绘制直方图(DVH)。
我的代码如下。
edge_A = np.linespace(0, max(A), 1000)
x_A = np.linespace(0.5*max(A)/1000, max(A), 1000)
n_A = np.histogram(A, bins=edge_A)
y_A = 1 - np.cumsum(n_A / len(A), axis=0)
plt.figure()
plt.plot(x_A, y_A)
plt.show()
但是,这段代码不适用于y_A,因为n_A是元组而len(A)是int,所以无法计算。 另外,我认为n_A的行不正确。
我该如何解决这个问题。
我在这部分中附加了matlab代码,运行良好。
edge_A = 0:max(A)/1000:max(A);
x_A = 0.5*max(A)/1000:max(A)/1000:max(A);
n_A = hiscounts(A, edge_A)
y_A = 1 - cumsum(n_A/length(A));
plot(x_A, y_A);
答案 0 :(得分:0)
问题是np.histogram将两个值作为元组返回:
private GoogleMap mGoogleMap;
// Create a LatLngBounds that includes Australia.
private LatLngBounds YOUR_CITY_OR_COUNTRY = new LatLngBounds(
new LatLng(-23, -66), new LatLng(-43, -68));
// Set the camera to the greatest possible zoom level that includes the
// bounds
mGoogleMap.setLatLngBoundsForCameraTarget(YOUR_CITY_OR_COUNTRY);
这似乎有效:
Returns
-------
hist : array
The values of the histogram. See `density` and `weights` for a
description of the possible semantics.
bin_edges : array of dtype float
Return the bin edges ``(length(hist)+1)``.
使用matplotlib更容易:
A = np.random.rand(100000)
edge_A = np.linspace(0, max(A), 1000)
x_A = np.linspace(0.5*max(A)/1000, max(A), 1000)
(n_A, _) = np.histogram(A, bins=edge_A,)
y_A = 1 - np.cumsum(n_A / len(A), axis=0)
plt.figure()
plt.plot(x_A[1:], y_A)
plt.show()
答案 1 :(得分:0)