当我将定位器和格式化程序应用于它们时,我遇到了一些刻度线消失的问题。我想要一个具有共享相同x轴的多个子图的图,因此只有底部子图具有标签,但所有子图都应该有标签。以下是一个例子:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import datetime
import matplotlib.dates as mdates
df = pd.DataFrame(np.absolute(np.random.randn(100)), index=pd.date_range('1/1/2000', periods=100, freq='M'))
fig, axes = plt.subplots(2,1,sharex=True,figsize=(8,10),dpi=300,tight_layout=True)
df.plot.area(ax=axes[1],legend=False)
到目前为止一切顺利。在这一点上看图,你可以看到刻度线和年份标签。 (注意我只是在这个例子中添加了一个图,但如果我有多个图和多列,行为是相同的。)但是我想在每个月放置一些标记,例如this example
years = mdates.YearLocator() # every year
months = mdates.MonthLocator() # every month
yearsFmt = mdates.DateFormatter('%Y')
for ax in axes:
ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(yearsFmt)
ax.xaxis.set_minor_locator(months)
当我这样做时,事情变得奇怪:
有什么想法吗?
答案 0 :(得分:0)
尝试添加:
func setTabBarVisible(visible:Bool, animated:Bool) {
//* This cannot be called before viewDidLayoutSubviews(), because the frame is not set before this time
// bail if the current state matches the desired state
if (tabBarIsVisible() == visible) { return }
// get a frame calculation ready
let frame = self.tabBarController?.tabBar.frame
let height = frame?.size.height
let offsetY = (visible ? -height! : height)
// zero duration means no animation
let duration:TimeInterval = (animated ? 0.3 : 0.0)
// animate the tabBar
if frame != nil {
UIView.animate(withDuration: duration) {
self.tabBarController?.tabBar.frame = (self.tabBarController?.tabBar.frame.offsetBy(dx: 0, dy: offsetY!))!
return
}
}
}
func tabBarIsVisible() ->Bool {
return (self.tabBarController?.tabBar.frame.origin.y)! < self.view.frame.midY
}
答案 1 :(得分:0)
看起来这可以通过在绘图函数调用中添加“x_compat = True”来修复:
见http://pandas.pydata.org/pandas-docs/version/0.13/visualization.html。不知道为什么,但似乎有效。