python - 具有共享轴的 matplotlib 子图
问题描述
我在理解 matplotlib 子图如何允许它们之间共享轴时遇到了一些麻烦。我看到了一些示例,但我无法修改一个以适合我的用例..;在这里,我用制服替换了我的数据,所以情节不会很有趣,但无论如何......
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import cm
d = 4
n1 = 100000
n2 = 100
background_data = np.random.uniform(size=(n1,d))
foreground_data = np.random.uniform(size=(n2,d))
fig = plt.figure()
for i in np.arange(d):
for j in np.arange(d):
if i != j:
ax = fig.add_subplot(d,d,1+i*d+j)
ax = plt.hist2d(background_data[:, i], background_data[:, j],
bins=3*n2,
cmap=cm.get_cmap('Greys'),
norm=mpl.colors.LogNorm())
ax = plt.plot(foreground_data[:,i],foreground_data[:,j],'o',markersize=0.2)
问:如何共享所有绘图的 x 和 y 轴?
解决方案
到目前为止,最简单的选择是使用sharex
和sharey
的参数plt.subplots
。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
d = 4
n1 = 100000
n2 = 100
background_data = np.random.uniform(size=(n1,d))
foreground_data = np.random.uniform(size=(n2,d))
fig, axs = plt.subplots(d,d, sharex=True, sharey=True)
for i in np.arange(d):
for j in np.arange(d):
if i != j:
ax = axs[j,i]
ax.hist2d(background_data[:, i], background_data[:, j],
bins=3*n2,
cmap=plt.get_cmap('Greys'),
norm=mpl.colors.LogNorm())
ax.plot(foreground_data[:,i],foreground_data[:,j],'o',markersize=2)
else:
axs[j,i].remove()
fig.savefig("sharedaxes.png")
plt.show()
推荐阅读
- php - Laravel 从子级反向查询数据以获取父级
- c++ - 构建在 VS 2013 中找不到 Platform Toolset = 'v141'
- sql - 在遗留的基于 java sql 的项目中集成 apache ignite 加入问题
- python - Python如何从另一个方法内部调用一个方法
- angular - 如何在 HighChart 中为 ColumnRange 图表的 xAixs 添加时间?
- css - css - 浏览器特定占位符颜色的元素颜色
- sql - 如何连接在第三个表中具有公共字段的两个表?
- javascript - 链接接缝是什么意思?
- html - 垂直对齐中间,用于响应式顶部导航,没有固定高度
- python - 确保用户输入是整数并且在特定范围内的问题