我有以下代码生成显示的图。
mport matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
One = range(1,10)
Two = range(5, 14)
l = len(One)
fig = plt.figure(figsize=(10,6))
gs = gridspec.GridSpec(3, 1, height_ratios=[5, 3, 3])
ax0 = plt.subplot(gs[0])
ax0.bar(range(l), Two)
plt.ylabel("Number of occurrence")
ax1 = plt.subplot(gs[1], sharey=ax0)
ax1.bar(range(l), Two)
ax2 = plt.subplot(gs[2])
ax2.bar(range(l), One)
plt.show()
我希望ylabel(“出现次数”)在第一个和第二个图之间共享,也就是说,它应该出现在第一个和第二个图的中间左侧。我该怎么做?
答案 0 :(得分:3)
我能想到的最好的方法是将文本添加到图形本身并将其放置在中心(图形坐标为0.5),如此
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
One = range(1,10)
Two = range(5, 14)
l = len(One)
fig = plt.figure(figsize=(10,6))
gs = gridspec.GridSpec(3, 1, height_ratios=[5, 3, 3])
ax0 = plt.subplot(gs[0])
ax0.bar(range(l), Two)
ax1 = plt.subplot(gs[1], sharey=ax0)
ax1.bar(range(l), Two)
ax2 = plt.subplot(gs[2])
ax2.bar(range(l), One)
fig.text(0.075, 0.5, "Number of occurrence", rotation="vertical", va="center")
plt.show()
答案 1 :(得分:0)
不是一个非常复杂的解决方案,但这会有效吗?取代
plt.ylabel("Number of occurrence")
与
plt.ylabel("Number of occurrence", verticalalignment = 'top')
<强> [编辑] 强>
对于我的64位python版本(2.7.3)我需要进行一些小改动
plt.ylabel("Number of occurrence", horizontalalignment = 'right')
这就是我的样子,这不是你想要的吗?
答案 2 :(得分:0)
我认为这个问题更多的是创建多轴,如果用正确的术语说的话。我想向您们提出我提出的问题以及我收到的答案,它为您提供了为情节创建多轴的解决方案。
链接到Matplotlib中的类似问题解决方案: Using Multiple Axis
与其他相关问题的链接是:multiple axis in matplotlib with different scales
答案 3 :(得分:0)