使用matplotlib绘图时触发SyntaxError错误,寻求解决方案
解决Matplotlib可视化中的SyntaxError问题
嘿,我看到你的问题了,这个语法错误其实是两个小细节导致的,咱们一步步来修复:
错误原因分析
- 变量名使用了非法字符:你用了
date&time作为变量名,&是Python中的逻辑运算符,不能出现在变量名里——Python会误以为你在给运算符赋值,直接触发can't assign to operator的错误。 - (报错信息中的)
converters参数格式错误:虽然你原代码里写的是正确的字典格式converters={0: ...},但报错信息里显示的是converters=0:mdates...,推测是复制时的笔误,咱们修正代码时确保参数格式合规。
修正后的完整代码
import numpy as np import datetime import time import matplotlib.pyplot as plt import matplotlib.ticker as mticker import matplotlib.dates as mdates # 读取数据时替换非法变量名 data = open('final1.csv','r') date_time, values = np.genfromtxt( data, delimiter=',', unpack=True, converters={0: mdates.bytespdate2num("%d/%m/%Y %H:%M")} ) plt.gca().xaxis.set_major_locator(mticker.MaxNLocator(10)) plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y %H:%M')) # 这里同步替换变量名 plt.plot(date_time, values, color='red') plt.ylabel('Values') plt.xlabel('Date & Time') # 标签里可以用&,不影响 plt.gcf().autofmt_xdate() plt.show()
额外适配提示
如果你使用Python 3,mdates.bytespdate2num可能会遇到字符串编码问题,这时候可以换成自定义转换函数:
def date_converter(s): return mdates.datestr2num(s.decode('utf-8'))
然后把converters={0: date_converter}传入genfromtxt,就能更好地处理编码问题啦。
内容的提问来源于stack exchange,提问作者Mushahid Abbasi
相关产品推荐
相关产品推荐

