Python:使用PySimpleGUI中sg.Input控件获取数据plot导致yticks错乱

sg.Input获取y轴数据代码

        sg.Text('First Read:', font=("Times New Roman", 9)),
        sg.Input(key='-first_read-', size=(25, 1), default_text='0,0,0', justification='center', font=("Times New Roman", 9), expand_x=True), 
        sg.Text('Second Read:', font=("Times New Roman", 9)),
        sg.Input(key='-second_read-', size=(25, 1), default_text='0,0,0', justification='center', font=("Times New Roman", 9), expand_x=True), 

数据解析

    data_list_first = value_fpr_plot["-first_read-"].split(',')
    data_list_second = value_fpr_plot["-second_read-"].split(',')

画图

    plt.clf()  # 清除当前图形的所有轴,通常用于在绘制新图形之前清除上一个图形。
    colors = list(mcolors.XKCD_COLORS.keys())
    marker = [".", "2", "x", "o", "*", "s", "3", "4", "+", "d"]
    data_list = []
    data_list.append(data_list_first)
    data_list.append(data_list_second)

    y_ticks = int(max([max(t) for t in data_list]))
    x_ticks = range(0, len(data_list[0]) * 10, 10)

    for i in range(len(data_list)):
        plt.plot(x_ticks, data_list[i], lw=1, ls='-', c=mcolors.XKCD_COLORS[colors[i]], marker=".", alpha=0.9, label=read_legend[i])
    plt.yticks(arange(0, y_ticks + 1, ceil(y_ticks / 15)), fontsize=7)

数据输入

在这里插入图片描述

图片输出

在这里插入图片描述

原因

经过value_fpr_plot["-first_read-"].split(',')解析的数据会变为[‘1’,‘2’,‘3’]的形式,列表中的数据已经由预期的int变为str形式,进而使用该数据画图导致yticks错乱。

代码修改

    plt.clf()  # 清除当前图形的所有轴,通常用于在绘制新图形之前清除上一个图形。
    colors = list(mcolors.XKCD_COLORS.keys())
    marker = [".", "2", "x", "o", "*", "s", "3", "4", "+", "d"]
    data_list = []
    data_list.append([int(i) for i in data_list_first]) #修改
    data_list.append([int(i) for i in data_list_second])#修改

    y_ticks = int(max([max(t) for t in data_list]))
    x_ticks = range(0, len(data_list[0]) * 10, 10)

    for i in range(len(data_list)):
        plt.plot(x_ticks, data_list[i], lw=1, ls='-', c=mcolors.XKCD_COLORS[colors[i]], marker=".", alpha=0.9, label=read_legend[i])
    plt.yticks(arange(0, y_ticks + 1, ceil(y_ticks / 15)), fontsize=7)

正确输出

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值