pandas数据中提取时间,和列数据绘图(一个图,多个线,成交量和收盘价图)

Posted 嘟嘟小冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas数据中提取时间,和列数据绘图(一个图,多个线,成交量和收盘价图)相关的知识,希望对你有一定的参考价值。

1. 数据导入

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tushare as ts
from datetime import datetime
import matplotlib.dates as mdates
from matplotlib.dates import AutoDateLocator

2.数据获取

data = ts.get_hist_data(\'000012\',start=\'2015-06-23\',end=\'2017-11-16\')

3.坐标轴处理

# 生成横纵坐标信息
data_time  = data.index
data_time_translation = [datetime.strptime(d, \'%Y-%m-%d\').date() for d in data_time]
data_close = data[\'close\'].values

# 配置时间坐标轴
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter(\'%Y-%m-%d\')) # 显示时间坐标的格式

autodates = AutoDateLocator()                # 时间间隔自动选取
plt.gca().xaxis.set_major_locator(autodates)

4. 画一个图

# 画图
plt.plot(data_time_translation, data_close,\'b\',lw=2.5)
plt.gcf().autofmt_xdate()  # 自动旋转日期标记

plt.grid(True)
plt.axis("tight")
plt.xlabel(\'Time\',size=20)
plt.ylabel(\'Close price\',size=20)
plt.title(\'000012\',size=20)

plt.show()

5.画多个图

# 绘图
plt.plot(data_time_translation,data[\'open\'].values,lw=1.5,label="open",color=\'blue\')
plt.plot(data_time_translation,data[\'high\'].values,label="high",color=\'red\',lw=1.5)
plt.plot(data_time_translation,data[\'close\'].values,lw=1.5,label="close",color=\'green\')
plt.plot(data_time_translation,data[\'low\'].values,lw=1.5,label="low",color=\'yellow\')
# 自动旋转日期标记
plt.gcf().autofmt_xdate()

# 绘图细节
plt.grid(True)
plt.axis("tight")
plt.xlabel(\'Time\',size=20)
plt.ylabel(\'Price\',size=20)
plt.title(\'000012\',size=20)
# 添加图例
plt.legend(loc=0)

plt.show()

6.分开显示两个图。

# 绘图
plt.figure(figsize=(7,5))       # 确定图片大小

plt.subplot(211)                # 确定第一个图的位置
plt.plot(data_time_translation,data[\'close\'].values,\'b\',label="1st")
plt.grid(True)
plt.axis(\'tight\')
plt.ylabel(\'Values\',size=20)
plt.title("000012")

plt.legend(loc=0)

plt.subplot(212)               # 确定第2个图的位置
plt.bar(data_time_translation,data[\'volume\'].values,width = 0.2,color=\'g\',label="2nd")  # 直方图的画法
plt.grid(True)
plt.xlabel("Time",size=20)
plt.ylabel("Volume",size=20)
plt.legend(loc=0)
plt.gcf().autofmt_xdate()
plt.show()

以上是关于pandas数据中提取时间,和列数据绘图(一个图,多个线,成交量和收盘价图)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pandas DataFrame 绘图函数绘制每个子图的 ylabel

Pandas 从数据透视表中绘图

绘图与可视化--pandas中的绘图函数

Plotly:如何在绘图线图中的特定点添加标记(python / pandas)

在pandas中提取包含多行和多列的JSON字符串列的部分

如何从数据框中显示绘图/3d 图?