[英]How to manipulate xticks in matplotlib same with dataframe plot
I wanna create plot using matplotlib
in QTdesigner
我想在QTdesigner
使用matplotlib
创建图
import sys
import pandas as pd
from PyQt5 import QtCore, QtWidgets, uic
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
Ui_MainWindow, QtBaseClass = uic.loadUiType("plot.ui")
class MyApp(QtWidgets.QMainWindow):
def __init__(self):
super(MyApp,self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
data = pd.DataFrame({
'ss_time':[
'2019-01-25 00:00:00', '2019-01-25 00:00:01', '2019-01-25 00:00:02', '2019-01-25 00:00:03', '2019-01-25 00:00:04',
],
'band1':[2,4,5,6,3]
})
data.set_index('ss_time', inplace=True)
df = pd.DataFrame(data, index=pd.date_range(start=data.index[0],end=data.index[-1], periods=5))
self.ui.MplWidget.canvas.axes
self.ui.MplWidget.canvas.axes.plot(df,marker='x')
self.ui.MplWidget.canvas.axes.set_xticks(df.index)
self.ui.MplWidget.canvas.draw()
if __name__ == "__main__":
app = QtWidgets.QApplication.instance()
if app is None:
app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec())
Here is library for MplWidget mplwidget.py 这是MplWidget mplwidget.py的库
from PyQt5.QtWidgets import*
from matplotlib.backends.backend_qt5agg import FigureCanvas
from matplotlib.figure import Figure
class MplWidget(QWidget)
def __init__(self, parent = None):
QWidget.__init__(self, parent)
self.canvas = FigureCanvas(Figure())
vertical_layout = QVBoxLayout()
vertical_layout.addWidget(self.canvas)
self.canvas.axes = self.canvas.figure.add_subplot(111)
self.setLayout(vertical_layout)
You can see the xticks
in that 1st figure is 2019,2019,... 你可以看到xticks
在第一个数字是2019,2019,...
I have done create plot using dataframe.plot()
but without qtdesigner and matplotlib with this code 我已经完成了使用dataframe.plot dataframe.plot()
创建图,但是没有qtdesigner和matplotlib与此代码
import pandas as pd
data = pd.DataFrame({
'ss_time':[
'2019-01-25 00:00:00', '2019-01-25 00:00:01', '2019-01-25 00:00:02', '2019-01-25 00:00:03', '2019-01-25 00:00:04',
],
'band1':[2,4,5,6,3]
})
data.set_index('ss_time', inplace=True)
df = pd.DataFrame(data, index=pd.date_range(start=data.index[0],end=data.index[-1], periods=5))
df.plot()
And the xticks
figure is what I expect 而xticks
数字正是我所期望的
My question How to manipulate the matlpotlib xticks become similar with second figure ? 我的问题如何使matlpotlib xticks与第二个数字相似?
You can pass the axes to the plot() method: 您可以将轴传递给plot()方法:
import sys
import pandas as pd
from PyQt5 import QtCore, QtWidgets, uic
Ui_MainWindow, _ = uic.loadUiType("plot.ui")
class MyApp(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MyApp, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
data = pd.DataFrame(
{
"ss_time": [
"2019-01-25 00:00:00",
"2019-01-25 00:00:01",
"2019-01-25 00:00:02",
"2019-01-25 00:00:03",
"2019-01-25 00:00:04",
],
"band1": [2, 4, 5, 6, 3],
}
)
data.set_index("ss_time", inplace=True)
df = pd.DataFrame(
data,
index=pd.date_range(start=data.index[0], end=data.index[-1], periods=5),
)
df.plot(ax=self.ui.MplWidget.canvas.axes)
self.ui.MplWidget.canvas.draw()
if __name__ == "__main__":
app = QtWidgets.QApplication.instance()
if app is None:
app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.