风百默 发表于 2022-5-14 00:04:47

各位大佬帮我看看,我的哪里错了,为什么画不出图?

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import warnings
def make(x,y):
    warnings.filterwarnings("ignore")

    plt.figure(figsize=(10,5))
    plt.plot(x,y)
    plt.title('电量统计图')
    plt.xlabel('Year')
    plt.ylabel('亿千瓦时')
    plt.show()


def list1():
    add = eval(input("请输入要添加的数据(格式一个年份一个发电量以字典的形式输入):"))
    add = list(add.items())
    add.sort(key = lambda x:x,reverse=False)
    return add


a = input('添加数据(输入True),查数据(输入False):')
b = input("湖南省的数据(输入湖南省)还是全国的(输入全国)")
y1 =
x1 =
y2 =
x2 =


if a == True and b =="全国":
    list1 = list1()
    for x,y in list1:
      y1.append(y)
      x1.append(x)
    while True:
      del x1
      del y1
      if len(x1) == 5:
            break
    make(x1,y1)
      
if a == True and b == "湖南省":
    list1 = list1()
    for x,y in list1:
      y2.append(y)
      x2.append(x)
    while True:
      del x2
      del y2
      if len(x2) == 5:
            break
    make(x2,y2)
if a == False and b == "全国":
    make(x1,y1)

if a == False and b == "湖南省":
    make(x2,y2)

Twilight6 发表于 2022-5-14 00:04:48


你第一个 input 返回的是 “True” 字符串,而不是 True 布尔值

所以你应该在后续的 if a == True 或 if a == False 都改成 if a =="True" / if a == "False"

参考代码:
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import warnings


def make(x, y):
    warnings.filterwarnings("ignore")

    plt.figure(figsize=(10, 5))
    plt.plot(x, y)
    plt.title('电量统计图')
    plt.xlabel('Year')
    plt.ylabel('亿千瓦时')
    plt.show()


def list1():
    add = eval(input("请输入要添加的数据(格式一个年份一个发电量以字典的形式输入):"))
    add = list(add.items())
    add.sort(key=lambda x: x, reverse=False)
    return add


a = input('添加数据(输入True),查数据(输入False):')
b = input("湖南省的数据(输入湖南省)还是全国的(输入全国)")
y1 =
x1 =
y2 =
x2 =

if a == "True" and b == "全国":
    list1 = list1()
    for x, y in list1:
      y1.append(y)
      x1.append(x)
    while True:
      del x1
      del y1
      if len(x1) == 5:
            break
    make(x1, y1)

if a == "True" and b == "湖南省":
    list1 = list1()
    for x, y in list1:
      y2.append(y)
      x2.append(x)
    while True:
      del x2
      del y2
      if len(x2) == 5:
            break
    make(x2, y2)
if a == "False" and b == "全国":
    make(x1, y1)

if a == "False" and b == "湖南省":
    make(x2, y2)

风百默 发表于 2022-5-14 10:05:04

本帖最后由 风百默 于 2022-5-14 10:06 编辑

Twilight6 发表于 2022-5-14 08:49
你第一个 input 返回的是 “True” 字符串,而不是 True 布尔值

所以你应该在后续的 if a == True 或...

大佬这个标题的汉字显示不出来,但x轴的英文字母可以显示,这是为什么,还有执行这个程序的时候电脑就会卡一会,

Twilight6 发表于 2022-5-14 10:28:24

风百默 发表于 2022-5-14 10:05
大佬这个标题的汉字显示不出来,但x轴的英文字母可以显示,这是为什么,还有执行这个程序的时候电脑就 ...



添加这行代码,设置支持中文的字体:plt.rcParams['font.sans-serif'] = ['SIMHEI']

页: [1]
查看完整版本: 各位大佬帮我看看,我的哪里错了,为什么画不出图?