@@ -594,79 +594,3 @@ Andrews curves charts:
594
594
595
595
@savefig andrews_curve_winter.png
596
596
andrews_curves(data, ' Name' , colormap = ' winter' )
597
-
598
-
599
- ****************************************
600
- Visualizing your data in Qt applications
601
- ****************************************
602
-
603
- There is an experimental support for visualizing DataFrames in PyQt4 and PySide
604
- applications. At the moment you can display and edit the values of the cells
605
- in the DataFrame. Qt will take care of displaying just the portion of the
606
- DataFrame that is currently visible and the edits will be immediately saved to
607
- the underlying DataFrame
608
-
609
- To demonstrate this we will create a simple PySide application that will switch
610
- between two editable DataFrames. For this will use the ``DataFrameModel `` class
611
- that handles the access to the DataFrame, and the ``DataFrameWidget ``, which is
612
- just a thin layer around the ``QTableView ``.
613
-
614
- .. code-block :: python
615
-
616
- import numpy as np
617
- import pandas as pd
618
- from pandas.sandbox.qtpandas import DataFrameModel, DataFrameWidget
619
- from PySide import QtGui, QtCore
620
-
621
- # Or if you use PyQt4:
622
- # from PyQt4 import QtGui, QtCore
623
-
624
- class MainWidget (QtGui .QWidget ):
625
- def __init__ (self , parent = None ):
626
- super (MainWidget, self ).__init__ (parent)
627
-
628
- # Create two DataFrames
629
- self .df1 = pd.DataFrame(np.arange(9 ).reshape(3 , 3 ),
630
- columns = [' foo' , ' bar' , ' baz' ])
631
- self .df2 = pd.DataFrame({
632
- ' int' : [1 , 2 , 3 ],
633
- ' float' : [1.5 , 2.5 , 3.5 ],
634
- ' string' : [' a' , ' b' , ' c' ],
635
- ' nan' : [np.nan, np.nan, np.nan]
636
- }, index = [' AAA' , ' BBB' , ' CCC' ],
637
- columns = [' int' , ' float' , ' string' , ' nan' ])
638
-
639
- # Create the widget and set the first DataFrame
640
- self .widget = DataFrameWidget(self .df1)
641
-
642
- # Create the buttons for changing DataFrames
643
- self .button_first = QtGui.QPushButton(' First' )
644
- self .button_first.clicked.connect(self .on_first_click)
645
- self .button_second = QtGui.QPushButton(' Second' )
646
- self .button_second.clicked.connect(self .on_second_click)
647
-
648
- # Set the layout
649
- vbox = QtGui.QVBoxLayout()
650
- vbox.addWidget(self .widget)
651
- hbox = QtGui.QHBoxLayout()
652
- hbox.addWidget(self .button_first)
653
- hbox.addWidget(self .button_second)
654
- vbox.addLayout(hbox)
655
- self .setLayout(vbox)
656
-
657
- def on_first_click (self ):
658
- ''' Sets the first DataFrame'''
659
- self .widget.setDataFrame(self .df1)
660
-
661
- def on_second_click (self ):
662
- ''' Sets the second DataFrame'''
663
- self .widget.setDataFrame(self .df2)
664
-
665
- if __name__ == ' __main__' :
666
- import sys
667
-
668
- # Initialize the application
669
- app = QtGui.QApplication(sys.argv)
670
- mw = MainWidget()
671
- mw.show()
672
- app.exec_()
0 commit comments