下面这段代码是使用MatPlotLib绘制数据随时间变化的趋势。

import datetime as dt
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.pylab as plb plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 df = pd.DataFrame(columns=('Time', 'Sales')) start_date = dt.datetime(2022, 7, 1)
end_date = dt.datetime(2022, 7, 10)
daterange = pd.date_range(start_date, end_date) fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15, 5)) for single_date in daterange:
row = dict(zip(['Time', 'Sales'], [single_date, int(50 * np.random.rand(1))]))
row_s = pd.Series(row)
row_s.name = single_date.strftime('%b %d')
df = df.append(row_s) df.loc['Jul 01': 'Jul 07', ['Sales']].plot(ax=axes[0])
axes[0].set_ylim(0, 50)
axes[0].set_xlabel('Sales Date')
axes[0].set_ylabel('Sale Value')
axes[0].set_title('在轴上表示时间')
axes[0].grid() # 标绘随时间的趋势
df.loc['Jul 01': 'Jul 07', ['Sales']].plot(ax=axes[1]) xx = np.arange(0, 10).flatten() * 1.0
yy = df['Sales'].values.flatten() * 1.0 # 下面的print用于调试,正式代码中或删除
print('xx: ', xx)
print('type(xx): ', type(xx))
print('type(xx[0]): ', type(xx[0]))
print('xx shape: ', xx.shape)
print('yy: ', yy)
print('type(yy): ', type(yy))
print('type(yy[0]): ', type(yy[0]))
print('yy shape: ', yy.shape)
# 上面的print用于调试,正式代码中或删除 z1 = np.polyfit(xx, yy, 1)
p1 = np.poly1d(z1)
plb.plot(xx, p1(xx), 'm-')
axes[1].set_ylim(0, 50)
axes[1].set_xlabel('Sales Date')
axes[1].set_ylabel('Sale Value')
axes[1].set_title('标绘随时间的趋势')
axes[1].legend(['Sales', 'Trend'])
axes[1].grid()

上面代码在最初运行时,并没有中间一大段print,当执行到z1 = np.polyfit(xx, yy, 1)时报错,在一大段错误信息最后,有一句“TypeError: No loop matching the specified signature and casting was found for ufunc lstsq_n” 。大致意思是:没有找到符合指定签名和特征的循环。

在查找原因的过程中,看到一篇文章pearsonr计算相关性时报错:No loop matching the specified signature and casting was found for ufunc add,其描述的错误现象和上面错误基本相同。于是尝试按照文章中的思路来解决,也才有了上面代码中大段的print。

注意到xx和yy不相同的地方是:xx中元素的类型是:numpy.float64,而yy中元素的类型是float,可能这就是产生错误的原因。于是生成yy的语句由原来的yy = df['Sales'].values.flatten() * 1.0,改为yy = np.array(df['Sales'].values * 1.0, dtype='float64').flatten(),再次运行后没有报错,并绘制出相应的图形。

最新文章

  1. VNC connect:Connection refused(10061)
  2. hightcharts 3d 堆积图下钻
  3. Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet
  4. Fiddler基本原理与抓取Andriod与IOS的App数据包
  5. Python自动化 【第二篇】:Python基础-列表、元组、字典
  6. Ibatis学习总结6--使用 SQL Map API 编程
  7. 【BZOJ-2818】Gcd 线性筛
  8. GIT 中提示 please tell me who you are
  9. 50道经典的JAVA编程题 (11-15)
  10. Jquery方法load之后导致js失效解决方法
  11. RAII(Resource Acquisition Is Initialization)资源获得式初始化
  12. Eucalyptus安装包的功能列表
  13. 再识QT(1)
  14. cloud9 ide
  15. java面试题,附个人理解答案
  16. 30分钟玩转Net MVC 基于WebUploader的大文件分片上传、断网续传、秒传(文末附带demo下载)
  17. 『集群』007 如何测试Slithice源代码
  18. SQL数据类型和C#数据类型间的转换
  19. JavaBean 和 pojo 的区别
  20. fzu2204 dp

热门文章

  1. windows10 安装MySQL ZIP版本
  2. 测试人员假装自己会“devops”
  3. Hbase学习(三)过滤器 java API
  4. Druid 查询超时配置的探究 → DataSource 和 JdbcTemplate 的 queryTimeout 到底谁生效?
  5. 什么是 Base64 ?
  6. 编译式安装MYSQL
  7. JDBC与ODBC的区别
  8. Java面试题(二)--MySQL
  9. 学长告诉我,大厂MySQL都是通过SSH连接的
  10. 发布 .NET MAUI / MAUI Blazor 应用 (1) - Windows