Java一键生成图表

import csv
import matplotlib.pyplot as plt
import ai_menu.get_data as number_data
from ai_menu.menu import bar_menu # 条形图
from ai_menu.menu import pie_menu # 饼图
from ai_menu.menu import plots_menu # 折线图
plt.rcParams["font.family"] = 'Arial Unicode MS'
class ai_menu():
    def __init__(self,flie_name):
        self.flie_name=flie_name
    def ride_headers(self):
        '''返回csv文件的表头'''
        try:
            with open('{}.csv'.format(self.flie_name),'r')as f:
                ride=csv.reader(f)
                for i in ride:
                    break
                return i
        except FileNotFoundError:
            print('找不到指定文件')
            return ''
    def op_menu(self):
        hreaders=self.ride_headers()
        print(hreaders)
        while True:
            print('''图表代码
    1,折线图
    2,条形图
    3,饼图
    4,直方图''')
            menu=input('请选择要使用的图表>>>')
            if menu=='2':
                '''使用折线图'''
                op_number=input('请输入想使用几行数据>>>')
                if op_number=='2':
                    print('''数据选择类型
    1:设置列表数量进行排序
    2:根据列表索引进行排序
    3:根据数据范围进行排序(目前只支持:整数)
    4:根据时间范围进行排序(需要传入完整的年月日)''')
                    list_type=int(input('请选择数据选择类型>>>'))
                    try:
                        if list_type==1:
                            data=number_data.get_two_line_data.get_two_number_data(self.flie_name)
                            line=number_data.get_two_line_data.lists_number(data[0])
                            bar_menu.two_plt(line[0],line[1],data[1],data[2],self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        elif list_type==2:
                            data=number_data.get_two_line_data.get_two_number_data(self.flie_name)
                            line=number_data.get_two_line_data.op_list_number(data[0])
                            bar_menu.two_plt(line[0],line[1],data[1],data[2],self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        elif list_type==3:
                            data=number_data.get_two_line_data.get_two_number_data(self.flie_name)
                            line=number_data.get_two_line_data.scope_of_data(data[0])
                            bar_menu.two_plt(line[0],line[1],data[1],data[2],self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        elif list_type==4:
                            print('''x轴显示方式
    1:日期作为x轴
    2:其他内容作为x轴''')
                            op_numbers=input('请选择x轴显示方式>>>>')
                            if op_numbers=='1':
                                data = number_data.get_two_line_data.get_two_number_data(self.flie_name)
                                line = number_data.get_two_line_data.scope_of_data_time(data[0])
                                bar_menu.two_plt(line[0], line[1], data[1], data[2], self.flie_name)
                                op = input('是否继续(N:结束 其他:继续):')
                                if op == 'N':
                                    break
                                else:
                                    pass
                            else:
                                data=number_data.get_two_line_data_time.get_time_name_data(self.flie_name)
                                line=number_data.get_two_line_data_time.scope_of_data_time_tag(data[0],data[1])
                                bar_menu.two_plt(line[0],line[1],data[2],data[3],self.flie_name)
                                op = input('是否继续(N:结束 其他:继续):')
                                if op == 'N':
                                    break
                                else:
                                    pass
                        else:
                            print('超过最大索引值')
                    except TypeError as e:
                        print('格式错误,不能构建图表。')
                        pass
                elif op_number=='3':
                    print('''数据选择类型
    1:设置列表数量进行排序
    2:根据列表索引进行排序
    3:根据数据范围进行排序(目前只支持:整数)
    4:根据时间范围进行排序(需要传入完整的年月日)''')
                    list_type = int(input('请选择数据选择类型>>>'))
                    try:

                        if list_type==1:
                            data=number_data.get_three_line_data.get_three_number_data(self.flie_name)
                            line=number_data.get_three_line_data.list_number(data[0],data[1])
                            bar_menu.three_bar(line[0],line[1],line[2],data[2],data[3],data[4],self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass

                        elif list_type==2:
                            data = number_data.get_three_line_data.get_three_number_data(self.flie_name)
                            line = number_data.get_three_line_data.op_list_number(data[0], data[1])
                            bar_menu.three_bar(line[0], line[1], line[2], data[2], data[3], data[4], self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        elif list_type==3:
                            data = number_data.get_three_line_data.get_three_number_data(self.flie_name)
                            line = number_data.get_three_line_data.scope_of_data(data[0], data[1])
                            bar_menu.three_bar(line[0], line[1], line[2], data[2], data[3], data[4], self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        elif list_type==4:
                            print('''x轴显示方式
        1:日期作为x轴
        2:其他内容作为x轴''')
                            op_numbers = input('请选择x轴显示方式>>>>')
                            if op_numbers == '1':
                                data = number_data.get_three_line_data.get_three_number_data(self.flie_name)
                                line = number_data.get_three_line_data.scope_of_data_time(data[0], data[1])
                                bar_menu.three_bar(line[0], line[1], line[2], data[2], data[3], data[4], self.flie_name)
                                op = input('是否继续(N:结束 其他:继续):')
                                if op == 'N':
                                    break
                                else:
                                    pass
                            else:
                                data=number_data.get_three_line_data_time.get_time_name_data(self.flie_name)
                                line=number_data.get_three_line_data_time.scope_of_data_time_tag(data[0],data[1],data[2])
                                bar_menu.three_bar(line[0],line[1],line[2],data[3],data[4],data[5],self.flie_name)
                                op = input('是否继续(N:结束 其他:继续):')
                                if op == 'N':
                                    break
                                else:
                                    pass
                        else:
                            print('超过最大索引值')
                    except Exception as e:
                        print('格式错误,不能构建图表')
                        pass
            elif menu=='1': #使用折线图
                op_number = int(input('请输入想使用几行数据>>>'))
                if op_number == 2:
                    print('''数据选择类型
        1:设置列表数量进行排序
        2:根据列表索引进行排序
        3:根据数据范围进行排序(目前只支持:整数)
        4:根据时间范围进行排序(需要传入完整的年月日)''')
                    list_type = int(input('请选择数据选择类型>>>'))
                    try:
                        if list_type == 1:
                            data = number_data.get_two_line_data.get_two_number_data(self.flie_name)
                            line = number_data.get_two_line_data.lists_number(data[0])
                            plots_menu.two_plt(line[0],line[1],data[1],data[2],self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        elif list_type == 2:
                            data = number_data.get_two_line_data.get_two_number_data(self.flie_name)
                            line = number_data.get_two_line_data.op_list_number(data[0])
                            plots_menu.two_plt(line[0],line[1],data[1],data[2],self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        elif list_type == 3:
                            data = number_data.get_two_line_data.get_two_number_data(self.flie_name)
                            line = number_data.get_two_line_data.scope_of_data(data[0])
                            plots_menu.two_plt(line[0],line[1],data[1],data[2],self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        elif list_type == 4:
                            print('''x轴显示方式
                1:日期作为x轴
                2:其他内容作为x轴''')
                            op_numbers = input('请选择x轴显示方式>>>>')
                            if op_numbers == '1':
                                data = number_data.get_two_line_data.get_two_number_data(self.flie_name)
                                line = number_data.get_two_line_data.scope_of_data_time(data[0])
                                plots_menu.two_plt(line[0], line[1], data[1], data[2], self.flie_name)
                                op = input('是否继续(N:结束 其他:继续):')
                                if op == 'N':
                                    break
                                else:
                                    pass
                            else:
                                data = number_data.get_two_line_data_time.get_time_name_data(self.flie_name)
                                line = number_data.get_two_line_data_time.scope_of_data_time_tag(data[0], data[1])
                                plots_menu.two_plt(line[0], line[1], data[2], data[3], self.flie_name)
                                op = input('是否继续(N:结束 其他:继续):')
                                if op == 'N':
                                    break
                                else:
                                    pass
                        else:
                            print('超过最大索引值')
                    except TypeError as e:
                        print('格式错误,不能构建图表。')
                        pass
                elif op_number==3:
                    '''输入3行数据'''
                    print('''数据选择类型
                    1:设置列表数量进行排序
                    2:根据列表索引进行排序
                    3:根据数据范围进行排序(目前只支持:整数)
                    4:根据时间范围进行排序(需要传入完整的年月日)''')
                    list_type = int(input('请选择数据选择类型>>>'))

                    if list_type == 1:
                        data = number_data.get_three_line_data.get_three_number_data(self.flie_name)
                        line = number_data.get_three_line_data.list_number(data[0], data[1])
                        plots_menu.three_plt(line[0], line[1], line[2], data[2], data[3], data[4], self.flie_name)
                        op = input('是否继续(N:结束 其他:继续):')
                        if op == 'N':
                            break
                        else:
                            pass
                    elif list_type == 3:
                        data = number_data.get_three_line_data.get_three_number_data(self.flie_name)
                        line = number_data.get_three_line_data.op_list_number(data[0], data[1])
                        plots_menu.three_plt(line[0], line[1], line[2], data[2], data[3], data[4], self.flie_name)
                        op = input('是否继续(N:结束 其他:继续):')
                        if op == 'N':
                            break
                        else:
                            pass
                    elif list_type == 2:
                        data = number_data.get_three_line_data.get_three_number_data(self.flie_name)
                        line = number_data.get_three_line_data.scope_of_data(data[0], data[1])
                        plots_menu.three_plt(line[0], line[1], line[2], data[2], data[3], data[4], self.flie_name)
                        op = input('是否继续(N:结束 其他:继续):')
                        if op == 'N':
                            break
                        else:
                            pass
                    elif list_type == 4:
                        print('''x轴显示方式
                    1:日期作为x轴
                    2:其他内容作为x轴''')
                        op_numbers = input('请选择x轴显示方式>>>>')
                        if op_numbers == '1':
                            data = number_data.get_three_line_data.get_three_number_data(self.flie_name)
                            line = number_data.get_three_line_data.scope_of_data_time(data[0], data[1])
                            plots_menu.three_plt(line[0], line[1], line[2], data[2], data[3], data[4], self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
                        else:
                            data = number_data.get_two_line_data_time.get_time_name_data(self.flie_name)
                            line = number_data.get_two_line_data_time.scope_of_data_time_tag(data[0], data[1])
                            plots_menu.three_plt(line[0], line[1], data[2], data[3], self.flie_name)
                            op=input('是否继续(N:结束 其他:继续):')
                            if op=='N':
                                break
                            else:
                                pass
            elif menu=='3':
                '''使用饼图'''
                line=pie_menu.get_menu(self.flie_name)
                pie_menu.plt_menu(line[0],line[1],line[2])
                op = input('是否继续(N:结束 其他:继续):')
                if op == 'N':
                    break
                else:
                    pass
            else:
                pass
    def run(self):
        self.op_menu()
def main():
    flie=input('请输入打开文件名称:')
    data=ai_menu(flie)
    data.run()
if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/RONNIE_Zz/article/details/107646499