matlplotlib 为折线图填充渐变颜色

概要

?
本篇记录绘图时填充颜色时的一些常用设置,主要用到了 imshow,fill 函数。

?


填充图实例

?
填充的效果图如下:

图 1:渐变色效果图

可根据下方给出的代码进行自定义。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon May  6 10:29:22 2019

@author: zk
"""

import matplotlib.pyplot as plt
import matplotlib as mpl
import datetime
import matplotlib.dates as mdate
import numpy as np
import random

DAYS = 365  

def Init():
    timedelta = datetime.timedelta(days = 1)
    startdate = datetime.date.today()

    xdate = [startdate+i*timedelta for i in range(DAYS)]

    ycapital = [3000]
    for _ in range(DAYS-1):
        ycapital.append(ycapital[-1]+random.uniform(-1, 1.1))

    return xdate, ycapital

xdate, ydata = Init()

xlims = mdate.date2num([xdate[0], xdate[-1]])
# 设置值,控制显示颜色深浅
# 第二个参数 yv 是每行值相同,逐行增加,所以设定了水平方向渐变
_, yv = np.meshgrid(np.linspace(0,1,210), np.linspace(0,1,90))

# Draw the image over the whole plot area
fig, ax = plt.subplots(figsize=(21,9))
# 画折线图
ax.plot(xdate, ydata, 'r-', label = 'My Strategy', linewidth=2)
# 其中 cmap 参数可以有许多选择,具体看正文介绍
# zv: array-like or PIL image,
# origin:Place the [0,0] index of the array in the upper left or lower left corner of the axes
# 所以 origin 控制了下方颜色深还是上方颜色深
#ax.imshow(yv, cmap=mpl.cm.Blues)
# aspect 设置长宽比例为自适应,默认值为 equal ,坑爹啊。。。
extent = [xlims[0], xlims[1], min(ydata), max(ydata)]
ax.imshow(yv, cmap=mpl.cm.Blues, origin='lower',alpha = 0.5, aspect = 'auto',
          extent = extent)
# Erase 上面 the data by filling with white
ax.fill_between(xdate, ydata, max(ydata), color='white')

# 设置刻度值颜色
plt.yticks(color = 'gray')
# 设置 y 轴百分比显示,注意将 y 轴数据乘以 100
#ax.yaxis.set_major_formatter(ticker.FormatStrFormatter('%.2f%%'))
# 颜色,旋转刻度
plt.xticks(color = 'gray',rotation = 15)
# 指定字体,大小,颜色
fontdict = {"family":"Times New Roman", 'size':12, 'color':'gray'} #Times New Roman, Arial
plt.title("random account value", fontdict = fontdict)
plt.xlabel("date(day)", fontdict = fontdict)
plt.ylabel("account value", fontdict = fontdict)
# 去掉边框 top left right bottom
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['right'].set_visible(False)
# 设置 x 轴颜色
ax.spines['bottom'].set_color('lightgray')
#设置时间标签显示格式
ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))

#设置时间刻度间隔
#timedelta = (xdate[-1] - xdate[0]) / 10  # 这种方式不能保证显示最后一个日期
#plt.xticks(mdate.drange(xdate[0], xdate[-1], timedelta))
# 分成 10 份
delta = round(len(xdate) / 9)
plt.xticks([xdate[i*delta] for i in range(9)] + [xdate[-1]])

#plt.yticks(np.linspace(min(ydata), max(ydata), 5))
#通过修改tick_spacing的值可以修改x轴的密度
#ax.xaxis.set_major_locator(ticker.MultipleLocator(10))
# 去掉 y 轴刻度线,四个方向均可设置
plt.tick_params(left = 'off')
# 设置刻度的朝向,宽,长度
plt.tick_params(which = 'major', direction = 'out', width = 0.2, length = 5) # in, out or inout
# 设置刻度显示在哪个方向上
#tick_params(labeltop='on',labelbottom='off',labelleft='off',labelright='off')
# 设置 y 轴方向的网络线
plt.grid(axis = 'y', color = 'lightgray', linestyle = '-', linewidth = 0.5)

# 设置图例列宽:columnspacing=float (upper left)
plt.legend(loc = 'best', fontsize = 12, frameon=False, ncol = 1)
#fig.autofmt_xdate()
plt.show()

至于参数 cmap 的选择可参考下图,该图是官网其中一个颜色效果展示图,更多可访问官网 colormaps_reference

图 2:渐变色效果图

原文地址:https://www.cnblogs.com/zhoukui/p/10979708.html

时间: 2024-11-10 13:19:03

matlplotlib 为折线图填充渐变颜色的相关文章

silverlight chart 折线图 的线颜色如何修改???

silverlight  chart 折线图 的线颜色如何修改??? 我做出来都是这些偏黄色,请问如何修改线的颜色,以及线的宽度?谢谢 silverlight chart 折线图 的线颜色如何修改???,布布扣,bubuko.com

JS 折线图

echarts 折线图.需要引入:echarts.min.js <script src="${ctxStatic}/common/echarts.min.js" charset="utf-8"  type="text/javascript"></script> JS调用后台方法,得到数据 Map<String, Object> map = new HashMap<String, Object>();

iOS 动画绘制线条颜色渐变的折线图

效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图.折线图可以更加直观的表示数据的变化.网络上有很多绘制折线图的demo,有的也使用了动画,但是线条颜色渐变的折线图的demo少之又少,甚至可以说没有.该Blog阐述了动画绘制线条颜色渐变的折线图的实现方案,以及折线图线条颜色渐变的实现原理,并附以完整的示例. 成果 本人已将折线图封装到了一个UIView子类中,并提供了相应的接口.该自定义折线图视图,基本上可以适用于大部分

在C#填充窗体为渐变颜色

protected override void OnPaintBackground(PaintEventArgs e)2  {3   LinearGradientBrush b = new LinearGradientBrush(this.ClientRectangle,4    Color.Blue,Color.AliceBlue,90f); //线性渐变5   e.Graphics.FillRectangle(b,this.ClientRectangle); // 填充窗体6   b.Dis

echart 折线图、柱状图、饼图、环形图颜色修改

之前在做报表的时候用过echart 用完也就完了,而这次在用的时候已经忘了,所以这里简单记录一下,好记性不如烂笔头!!! 1.折线图修改颜色: [javascript] view plain copy xAxis: { type: 'category', boundaryGap: false, data: ['年龄','20岁以下','30岁','40岁','50岁','60岁','60岁以上'] }, yAxis: { type: 'value' }, series: [ { name:'员工

swift:打造你自己的折线图

看到苹果Health里的折线图了吗.我们就是要打造一个这样的折线图.没看过的请看下图. 我们的主题在于折线图本身.其他的包括步数.日平均值等描述类的内容这里就不涉及了. 首先观察,这个图种包含些什么组成部分.线?这个太明显都看见了.还有每个节点的小圆圈,还有折线图里从上到下的渐变.这里是白色的从上到下逐渐透明的效果.还有一条虚线.这个暂时先不考虑了.你能绘制出来最下面的x轴标尺,绘制个虚线还不是小菜? 为什么说是绘制呢,因为显然我们不想用一个UIView把像素设置为1,背景色设置为UIColor

4-Highcharts曲线图之时间轴折线图

鼠标按住左键 左右移动可以试试<!DOCTYPE> <html lang='en'> <head> <title>4-Highcharts曲线图之时间轴折线图</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="../jquery-2.1.4/jquery.

highcharts.js的时间轴折线图

工作中正好用到. 鼠标按住左键 左右移动可以试试 <!DOCTYPE> <html lang='en'> <head> <title>4-Highcharts曲线图之时间轴折线图</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="../jquery-2.1

自定义view—折线图

学习导航 第一节:http://blog.csdn.net/bobo8945510/article/details/53197727 -自定义View-自定义属性及引用 第二节:http://blog.csdn.net/bobo8945510/article/details/53203233 自定义view02-图形绘制 第三节:http://blog.csdn.net/bobo8945510/article/details/53213938 自定义View-绘图基础之Path 第四节:http