Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python xtick标签中的Matplotlib换行符_Python_Matplotlib - Fatal编程技术网

Python xtick标签中的Matplotlib换行符

Python xtick标签中的Matplotlib换行符,python,matplotlib,Python,Matplotlib,我见过很多解决方案(包括matplotlib示例代码),要使x-tick标签是多行的,只需引入一个换行符即可。我做到了(下面是添加这一新行的代码摘录): 子批.xaxis.set\u major\u格式化程序(mdates.DateFormatter(“%m-%d\n%H:%m”,tz=startTime.tzinfo)) 然而,我注意到这引入了一个奇怪的怪癖,当我将鼠标移到绘图上时,它会导致所有绘图上下“跳跃”(当我再次将鼠标移到绘图上时,会稍微上下移动)。注意:如果只有一个绘图,则底部的

我见过很多解决方案(包括matplotlib示例代码),要使x-tick标签是多行的,只需引入一个换行符即可。我做到了(下面是添加这一新行的代码摘录):


子批.xaxis.set\u major\u格式化程序(mdates.DateFormatter(“%m-%d\n%H:%m”,tz=startTime.tzinfo))

然而,我注意到这引入了一个奇怪的怪癖,当我将鼠标移到绘图上时,它会导致所有绘图上下“跳跃”(当我再次将鼠标移到绘图上时,会稍微上下移动)。注意:如果只有一个绘图,则底部的matplotlib工具栏(带有保存按钮等)仅上下移动。当您尝试移动鼠标并与绘图交互时,这会使您看起来不舒服。我注意到当我去掉新行字符时,这种怪癖消失了。其他人遇到了这个问题并解决了它(比如在保持多行标签不出现这种奇怪的“跳跃”怪癖时)


我正在使用Python3.6和matplotlib 1.5.3。使用TKAgg后端。

默认情况下,导航工具栏中显示的值与轴上显示的值使用相同的格式化程序。我假设您只想将所讨论的格式
%m-%d\n%H:%m”
用于ticklabel格式,并且很乐意在移动鼠标时对显示的值使用单行格式

这可以通过为这两种情况使用不同的格式化程序来实现

# Format tick labels
ax.xaxis.set_major_formatter(mdates.DateFormatter("%m-%d\n%H:%M"))
# Format toolbar coordinates
ax.fmt_xdata = mdates.DateFormatter('%m-%d %H:%M')
示例图片:

复制的完整代码:
导入matplotlib
matplotlib.use(“TkAgg”)
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
将matplotlib.dates导入为mdates
将numpy作为np导入
日期=pd.日期范围(“2016-06-01 09:00”,“2016-06-01 16:00”,freq=“H”)
y=np.cumsum(np.random.normal(size=len(dates)))
df=pd.DataFrame({“日期”:日期,“y”:y})
图,ax=plt.子批次()
ax.绘图日期(df[“日期”],df.y'-')
ax.xaxis.set\u major\u定位器(mdates.HourLocator())
ax.xaxis.set\u major\u格式化程序(mdates.DateFormatter(“%m-%d\n%H:%m”))
ax.fmt_扩展数据=mdates.DateFormatter(“%m-%d%H:%m”)

plt.show()。这是一个相反的问题: