python - 如何使用matplotlib创建具有不同长度的多个数组的直方图,y轴上的百分比
问题描述
我想为多个数组创建直方图,它们将共享百分比 y 轴。
例如,此图正确:
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.ticker as ticker
# these are my measurements, unsorted
num_of_points = 10000
num_of_bins = 20
data = np.random.randn(num_of_points) # generate random numbers from a gaussian distribution
fig, ax = plt.subplots()
ax.hist(data, bins=num_of_bins, edgecolor='black', alpha=0.3)
ax.set_title("Histogram")
ax.set_xlabel("X axis")
ax.set_ylabel("Percentage")
ax.yaxis.set_major_formatter(ticker.PercentFormatter(xmax=len(data)))
plt.show()
但是当我添加另一个长度不同的数据时,data2 的百分比关闭,因为 PercentFormatter 需要 len(data)。
num_of_points = 10000
num_of_points2 = 30000
num_of_bins = 20
data = np.random.randn(num_of_points) # generate random numbers from a gaussian distribution
data2 = np.random.randn(num_of_points2)
fig, ax = plt.subplots()
ax.hist(data, bins=num_of_bins, edgecolor='black', alpha=0.3)
ax.hist(data2, bins=num_of_bins, edgecolor='black', alpha=0.3)
ax.set_title("Histogram")
ax.set_xlabel("X axis")
ax.set_ylabel("Percentage")
ax.yaxis.set_major_formatter(ticker.PercentFormatter(xmax=len(data2)))
plt.show()
那么我怎样才能共享y轴百分比,这对于两个数据数组都是正确的?
解决方案
我认为解决此问题的一种方法是使用辅助 y 轴绘制第二个数据。
尝试这个!
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.ticker as ticker
# these are my measurements, unsorted
num_of_points = 10000
num_of_bins = 20
data = np.random.randn(num_of_points) # generate random numbers from a gaussian distribution
fig, ax = plt.subplots()
ax.hist(data, bins=num_of_bins, color='blue', edgecolor='black', alpha=0.1)
ax.set_title("Histogram")
ax.set_xlabel("X axis")
ax.set_ylabel("Percentage of data")
ax.yaxis.set_major_formatter(ticker.PercentFormatter(xmax=len(data)))
ax1 = ax.twinx()
num_of_points2 = 30000
data2 = np.random.randn(num_of_points2)
ax1.hist(data2, bins=num_of_bins, color='orange', edgecolor='black', alpha=0.1)
ax1.set_ylabel("Percentage of data2")
ax1.yaxis.set_major_formatter(ticker.PercentFormatter(xmax=len(data2)))
plt.show()
推荐阅读
- python - Range() 函数将字典中的整数(值)更改为对象
- c# - .NET Core 的自定义 Specflow html 报告的想法
- python - 尝试在服务器上运行 django 应用程序时密码身份验证失败
- sql-server - 在 SQL-Server 中重写 Oracle 函数
- google-cloud-platform - GKE 上的 Nginx 控制器与 TCP 负载平衡超时
- ignite - Apache Ignite 找不到已部署的服务
- javascript - 提升仅在 JavaScript 中实现吗?
- c - 向前定义 GCC 的编译指示
- javascript - 将分组查询转换为对象树
- javascript - 语法错误“未定义(”。错误的根源在哪里?