matplotlib画图,修改横坐标刻度并添加图例,解决legend显示不全的问题,横坐标日期显示

from matplotlib import pyplot as plt
from Global_List import *
import math
import numpy as np
from matplotlib.pyplot import MultipleLocator
#Global_List文件中定义了一些参数的值


v_sh = 2
a = -3.03493352192820e-10
b = 0.0551645264442086
c = 1.33453140871192
#画子图是为了legend显示完全
fig, ax = plt.subplots()

for v in range(11):
    RHO = []
    Q = []
    visorAngle = 0.1 * v
    for i in range(10,61):
        q = i/10 * 3600
        Q.append(q)
        rho_i = visorAngle * (a * math.pow(q, 2) + b * v_sh + c) + (1 - visorAngle) * rhoWater
        RHO.append(rho_i)
    plt.plot(Q, RHO)

#自定义X轴的刻度显示值
X_ticks = np.arange(3600, 25200, 3600)
plt.xticks(X_ticks, [i for i in range(1,7,1)])
#设置X轴的刻度显示,以下为 显示3600的倍数的数值,该数值是原始横坐标值,并非自定义的刻度值
x_major_locator=MultipleLocator(3600)
ax.xaxis.set_major_locator(x_major_locator)
plt.xlabel("Flow m³/s")
plt.ylabel("Density  *10³kg/m³")
#定义legend在图像外
lgnd = plt.legend(["VA=0.0", "VA=0.1", "VA=0.2", "VA=0.3", "VA=0.4", "VA=0.5", "VA=0.6", "VA=0.7", "VA=0.8", "VA=0.9", "VA=1.0"], bbox_to_anchor=(1.05, 1), loc=2)
#通过画子图的方式,使legend显示完全,如果不用这种方法,legend放在图像外面时,legend显示不全
fig.subplots_adjust(right=0.75)
plt.show()

如果不使用子图方式,结果如下图所示

使用子图方式,结果如下图所示

横坐标显示日期

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import time
import random


x = list(range(365))
y = np.random.randint(3000, 3300, 365)

plt.subplots(figsize=(18,6))

plt.xlabel('time')                         # 设置x坐标轴的名称

start_date = '20200101'
end_date = '20201231'
time_label = pd.date_range(start=start_date, end=end_date, freq='D').tolist()
my_tick = list(range(len(time_label)))

print(time_label[::100])

plt.grid(b=True)
plt.xticks(my_tick[::30],time_label[::30]
    ,rotation=30, ha='right')              # 利用切片来完成需求
plt.ylabel('whatever')
plt.plot(x, y)

plt.show()

print("dobe")

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值