Matplotlib图形绘制

 一、 基础点

# 网格线
"""
plt.grid()         # 全部展示
plt.grid(1)        # 显示网格线 1=True=默认显示;0=False=不显示   
plt.grid(b=True)   #  1=True=默认显示;0=False=不显示
plt.grid(b=True, axis='x')     #只显示x轴网格线 (axis in ['x', ''y','both'] 对应显示网格线)
plt.grid(b=1, which='major')   # which 默认就是major, 边界展示both minor则不显示网格(去除网格)
alpha=.3                       # 透明度

"""

# x ,y轴设置
"""
plt.xlim() ylim()函数 设置x轴y轴范围坐标
plt.xlim(50, 750)   # x轴
plt.ylim(50, 750)   # y轴

xticks()函数设置X轴方法--刻度、标签
plt.xticks(
    xtick_location, xtick_labels, rotation=60,fontsize=12,horizontalalignment='center', alpha=.7
           )
# xtick_location :刻度
# xtick_labels : 标签
# rotation : 倾斜度
# fontsize : 字体大小
# horizontalalignment : 水平对齐
# alpha : 透明度

# xlabel 坐标轴标签
plt.xlabel("时间")
plt.ylabel("收益率")
plt.xlabel(x_label, position= [1, 1])
"""

# 图例
"""
legend = plt.legend([p1, p2], ["BJ", "SH"])
loc: 位置
title:  标题
frameon=False  # 去掉图例边框
edgecolor: 图例边框颜色 
facecolor: #背景颜色

"""

# 解决中文显示问题
"""
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
"""

# 注释文本

"""
text表示注释文本,xy表示箭头端点位置,xytext表示文本注释的位置,arrowprops控制箭头,形式为字典

plt.text(x = 1,y = 0.5,s = '这是标注',fontsize = 15,c = 'b',rotation = 20) 
plt.annotate(
    text = '描述文字',xy = (4.65,-1), xytext = (4.2,0),
    arrowprops = {'headwidth':10,'facecolor':'g'},fontsize = 15)

"""

# 绘图填充
"""
plt.fill_between()
# 第一个参数表示要覆盖的左右范围,第二个参数表示覆盖的下限,第三个参数表示覆盖的上限,在这里则表示填充y1曲线和y2曲线中间的区域
plt.fill_between(x,y1,y2,facecolor = 'k',alpha = 0.2)

"""

# 画框及打标签

"""
# 画框
current_axis = plt.gca()
current_axis.add_patch(plt.Rectangle(
    (xmin, ymin), xmax-xmin, ymax-ymin, 
    color='green', fill=False, linewidth=2
    )
 )
# 打标签 label是想要打的标签名
current_axis.text(
    xmin, ymin, 'label', size='x-large',
    color='white', 
    bbox={'facecolor':'green', 'alpha':1.0}
    )

# 设置边框
获取当前坐标轴位置并移动
plt.gca().spines["top"].set_alpha(0.0)


"""

二、  代码实例

import time
from  jqdatasdk import *
import logging
import matplotlib.pyplot as plt
import pandas as pd

auth("name", "pwd")

df = get_price('000300.XSHG',end_date='2020-4-4',count=300)
df['date1']= df.index.tolist()
df['date']=df['date1'].apply(lambda x:x.strftime('%Y-%m-%d %H:%M:%S'))
df["value"] = ((df['close']/df['high'])-1)*100
print(df)
df.drop(["date1"], axis=1, inplace=True)
print(df)
# Draw Plot
plt.figure(figsize=(12, 8), dpi=80)
plt.plot(df['date'], df['value'], color='#dc2624')

# Decoration
xtick_location = range(0,len(df),30)

print(xtick_location)
xtick_labels = [str(x[:10]) for x in df.date.tolist()[::30]]
print("xtick_labels")
print(xtick_labels)
plt.xticks(xtick_location,
           xtick_labels,
           rotation=60,
           fontsize=12,
           horizontalalignment='center',
           alpha=.7
           )

plt.yticks(fontsize=12, alpha=.7)

plt.title("Air Passengers Traffic", fontsize=18)
plt.grid(alpha=.3, which='both', color="r")
plt.legend(["ROE"],loc='best', title='收益率', facecolor='y')
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.xlabel("时间")
plt.ylabel("收益率")
plt.xlabel(x_label, position= [1, 1])
# 底色填充
y1 =  -1
y2 =  -2
plt.fill_between(xtick_location, y1, y2, facecolor = 'y', alpha = 0.2)

# 文本标注
plt.text(x = 10, y = -1,s = '收益率曲线图',fontsize = 15, c = 'b',rotation = 20) 
plt.annotate(
    text = 'xy表示箭头端点位置,xytext表示文本注释的位置,arrowprops控制箭头',
    xy = (50,-3), xytext = (100,  -4),
    arrowprops = {'headwidth':8,'facecolor':'g'},fontsize = 15)

# Remove borders
plt.gca().spines["top"].set_alpha(0.0)
plt.gca().spines["bottom"].set_alpha(0.3)
plt.gca().spines["right"].set_alpha(0.0)
plt.gca().spines["left"].set_alpha(0.3)

plt.savefig("test.jpg")

三、 效果图

1. 直接使用 * 的结果 

a*a就是说直接把两个二维矩阵的每个元素进行对应相乘。

#  必须是两个维度完全相同的ndarray
2. 使用numpy.dot(a,b)

numpy.dot(a,b)才是真正意义上的矩阵相乘
 

参考

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)

operands could not be broadcast together with shapes解决方案

plt.legend()的几种用法

Matplotlib入门-3-plt.gca( )挪动坐标轴

matplotlib入门之折线图跟常用基本函数

matplotlib绘图:figure和axes有什么区别?

python matplotlib.pyplot画矩形图 以及plt.gca()

python可视化50最常用12个变化(Change)关系图 - 知乎 (zhihu.com)

Matplotlib可视化最有价值的50张图表

https://www.cnblogs.com/czz0508/category/1392246.html 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

**星光*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值