基于DataFrame从中选取任意列matplotlab绘图(笔记)

绘图核心代码

import numpy as np
import pandas as pd
import matplotlib
matplotlib.use("Qt5Agg")  # 声明使用QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib import pyplot as plt #导入模块
class MyFigure(FigureCanvas):   # 通过继承FigureCanvas类,使得该类既是一个PyQt5的Qwidget,又是一个matplotlib的FigureCanvas,这是连接pyqt5与matplot                                          lib的关键
    def __init__(self):
        self.fig = Figure()#第一步:创建一个创建Figure
        super(MyFigure,self).__init__(self.fig) #第二步:在父类中激活Figure窗口
            
    def plotscatter(self,plot_df):        
        if isinstance(plot_df,pd.Series):    #如是series,无法用df.shape[1]判断       
            x=np.array(plot_df.index)
            y=np.array(plot_df) 
        else:
            x = np.array(plot_df['name0'])              
            y = np.array(plot_df['name1'])
        self.axes = self.fig.add_subplot(111)   #在Figure窗口创建一个子图,用于绘制图形用
        self.axes.plot(x,y)

1.单列散点

以pd的index为横轴x值,单列散点值为y值
(1)问题:传入plot_df这时实际上是个series,不能用plot_df[0]表达pd的列的模式
(2)问题:x=np.array(plot_df.index)可以直接当list或series用,直接用,如果要把index转成list用,可以先:

temp_list=plot_df.index.tolist()

当然list还可以转成series

temp_s=pd.Series(temp_list)

最简单是直接用index

x=np.array(plot_df.index)

2.任意两列

当pd还是pd时,可以根据列名确定绘图的x,y
也可以直接用:

x = np.array(plot_df['name0'])              
y = np.array(plot_df['name1'])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值