Matplotlib 向事件的打印x轴添加辅助标签
我有一个ax.stackplot显示了不同群体的人口随时间的变化。x轴是时间,y轴是人口。我在主标签上显示时间为1年,次标签上显示时间为1个月,但是,在“事件”中数据的更改更频繁。我想沿着x轴显示这些事件的标签,就像我在图中所画的那样: 我尝试使用Matplotlib 向事件的打印x轴添加辅助标签,matplotlib,jupyter-notebook,python-3.6,Matplotlib,Jupyter Notebook,Python 3.6,我有一个ax.stackplot显示了不同群体的人口随时间的变化。x轴是时间,y轴是人口。我在主标签上显示时间为1年,次标签上显示时间为1个月,但是,在“事件”中数据的更改更频繁。我想沿着x轴显示这些事件的标签,就像我在图中所画的那样: 我尝试使用plt.axes()添加第二个轴,但由于某种原因,第二个轴正在覆盖第一个轴的刻度。有人对如何做到这一点有什么建议吗 谢谢大家! 如果您没有太多的点,我认为最好的方法是使用ax.text: from matplotlib import pyplot i
plt.axes()
添加第二个轴,但由于某种原因,第二个轴正在覆盖第一个轴的刻度。有人对如何做到这一点有什么建议吗
谢谢大家! 如果您没有太多的点,我认为最好的方法是使用
ax.text
:
from matplotlib import pyplot
import matplotlib
import numpy as np
# Random plot
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = pyplot.subplots()
ax.plot(t, s)
# ax.text(x, y, text, rotation)
ax.text(0, -0.35, "Event 1", rotation=90) # rotation=90 is easier to read, for me
ax.text(0.5, -0.35, "Event 2", rotation=-90) # opposite rotation
ax.text(0.75, -0.35, "Event 3", rotation=-90)
# This gives some space at the bottom of the figure
# so that the text is visible
fig.subplots_adjust(bottom=0.2)
pyplot.show()
结果:
查看以了解更多信息。感谢您的回复,我能够根据您的建议提出解决方案。解决方案包括使用ax.twny()创建第二个axis对象,然后指定第二个x轴数据点和标签。以下是一个简单的示例,供感兴趣的人参考:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
# Create some meaningless data for testing.
x = np.arange(0, 10)
y = np.full(10, len(x))
# Set up figure and set axes parameters.
fig = plt.figure(num=None, figsize=(10, 8), dpi=80, facecolor='w', edgecolor='k')
ax = plt.axes()
ax.xaxis.set_minor_locator(ticker.FixedLocator([1, 3, 5, 7, 9]))
# Get a second axes (for secondary labels) and set parameters.
axl = ax.twiny()
axl.tick_params(axis='x', bottom=True, labelbottom=True, labeltop=False, top=False, length=15, colors=[.5,.5,.5])
# Plot data on primary axes
ax.bar(x, y)
interval = ax.xaxis.get_view_interval()
# Set label properties on secondary axes (for secondary labels)
axl.xaxis.set_view_interval(*interval)
axl.xaxis.set_ticklabels(['a', 'b'])
axl_loc = ticker.FixedLocator([0.5, 4.75])
axl.xaxis.set_major_locator(axl_loc)
plt.show()
plt.axes()
如果已经存在一个轴,则不会创建新轴。感谢您指出,解决方案是使用ax.twny()创建第二个轴对象,然后我指定了x轴。