添加第二个plt.plot时出现无效语法错误,请求排查解决
排查Python matplotlib代码的语法错误
我来帮你梳理下代码里的几个关键语法问题,这些就是触发无效语法错误的根源:
1. 多行变量定义的语法问题
你第一行把多个变量定义写在同一行却没加分号,Python里同一行多个语句必须用;分隔,或者直接分成多行写(更推荐后者,可读性更好)。
错误写法:
x = [] y = [] x2 = [] y2 = []
正确写法(二选一):
# 方式1:分行写(推荐) x = [] y = [] x2 = [] y2 = [] # 方式2:用分号分隔同一行 x = []; y = []; x2 = []; y2 = []
2. plt.plot语句的括号未闭合
你的两个plt.plot调用最后都少了一个右括号,导致语法不完整;另外label=(+str(...))里的+是多余的,直接拼接字符串即可,用f-string会更简洁。
错误写法:
plt.plot(x,y,label=(+str(incur1)+ '/' +str(incur2)) plt.plot(x2,y2,label=(+str(incur2)+ '/' +str(incur1))
修正后:
plt.plot(x, y, label=f"{incur1}/{incur2}") plt.plot(x2, y2, label=f"{incur2}/{incur1}")
3. plt.title的语法错误
这里有两个明显问题:
- 开头多了个多余的
+号 - 换行符写错了,是
\n不是/n - 同样推荐用f-string简化字符串拼接
错误写法:
plt.title (+incur1+ '/' +incur2+ '/nEx Rate Data')
修正后:
plt.title(f"{incur1}/{incur2}\nEx Rate Data")
4. 关于你尝试的label变量优化
你定义label1 = (incur1+ '/' +incur2)是没问题的,但调用时写成label=(+str(label1)...多了多余的+和括号,直接用label=label1就行(因为label1已经是字符串了,不需要再转str):
label1 = f"{incur1}/{incur2}" label2 = f"{incur2}/{incur1}" plt.plot(x, y, label=label1) plt.plot(x2, y2, label=label2)
完整修正后的代码示例
import matplotlib.pyplot as plt import datetime # 后续datetime逻辑需要导入 # 假设你已经给incur1、incur2赋值,这里用示例值 incur1 = "USD" incur2 = "EUR" # 变量定义修正 x = [] y = [] x2 = [] y2 = [] # 绘图语句修正 plt.plot(x, y, label=f"{incur1}/{incur2}") plt.plot(x2, y2, label=f"{incur2}/{incur1}") plt.xlabel('Time') plt.ylabel('Ex Rate') plt.title(f"{incur1}/{incur2}\nEx Rate Data") plt.legend() # 后续添加datetime数据的示例 current_time = datetime.datetime.now() first_exRtRate1 = 1.08 # 示例汇率值 x.append(current_time) y.append(first_exRtRate1) # 最后别忘了显示图表 plt.show()
额外提示
- 字符串拼接优先用f-string(Python3.6+支持),比
+拼接更简洁易读,也不容易出错 - 写完代码后可以先检查括号是否配对,很多语法错误都是括号不闭合导致的
- 添加datetime数据时,如果后续遇到x轴时间标签重叠的问题,可以用
plt.xticks(rotation=45)来旋转标签优化显示
内容的提问来源于stack exchange,提问作者Goulouh Anwar
相关产品推荐
相关产品推荐

