精华内容
下载资源
问答
  • 如果想在整个图形中添加标题、图例、轴标签如何操作呢? matplotlib.pyplot模块提供了suptitle()、figlegend()、figtext()等函数用于添加图形级的标题、图例、文本。 figure对象增加了supxlabel()方法和supy

    当前有效matplotlib版本为:3.4.1

    概述

    如果不手动创建子图,matplotlib会默认自动创建一个子图,前面介绍的title()、legend()、xlabel()、ylabel()等函数的调用对象其实都是子图对象,也只对子图生效。如果想在整个图形中添加标题、图例、轴标签该如何操作呢?

    matplotlib.pyplot模块提供了suptitle()figlegend()figtext()等函数用于添加图形级的标题、图例、文本。
    figure对象增加了supxlabel()方法和supylabel()方法用于添加图形的轴标签。(3.4.1新特性)

    figlegend()函数

    figlegend()函数用于为图形添加图例。其用法与legend()函数类似。

    函数的签名为matplotlib.pyplot.figlegend(*args, **kwargs)

    figtext()函数

    figtext()函数用于为图形添加文本。其用法与text()函数类似,主要区别在于位置参数xy的参照为整个图形。

    函数的签名为matplotlib.pyplot.figtext(x, y, s, fontdict=None, **kwargs)

    Figure.supxlabel()Figure.supylabel()

    matplotlib 3.4.1增加了为图形添加轴标签的功能。其使用方法类似于pyplot.suptitlepyplot.xlabel()pyplot.ylabel()
    函数的签名为:
    matplotlib.figure.FigureBase.supxlabel( t, **kwargs)
    matplotlib.figure.FigureBase.supylabel( t, **kwargs)

    案例:演示图形级的标题、图例、文本、轴标签

    import matplotlib.pyplot as plt
    
    # 添加3行3列9个子图
    fig, axes = plt.subplots(3, 3)
    # 为第一个子图添加一条直线,并绘制子图图例
    axes[0, 0].plot([1, 1], label='1')
    axes[0, 0].legend()
    axes[0, 0].set_title('1')
    # 为第二个子图添加一条直线
    axes[0, 1].plot([1, 1], label='1')
    # 绘制整个图形的图例
    plt.figlegend()
    # 在整个图形范围内添加文本
    plt.figtext(0.3, 0.3, 'test')
    # 添加整个图形的标题
    plt.suptitle('test')
    # 添加整个图形的x轴标签
    fig.supxlabel("x")
    # 添加整个图形的y轴标签
    fig.supylabel("y")
    
    plt.show()
    

    在这里插入图片描述

    展开全文
  • 项目:增加图形元素 ... QCustomPlot允许在绘图上放置和锚定图形元素,例如文本,箭头,线条,矩形,任意像素图等...本示例说明如何创建始终位于rect顶部的文本标签以及将绘图坐标中的点与该标签连接的箭头。 // a.

    项目:增加图形元素

    https://www.qcustomplot.com/index.php/tutorials/items

    QCustomPlot允许在绘图上放置和锚定图形元素,例如文本,箭头,线条,矩形,任意像素图等。它们基于抽象基类QCPAbstractItem。有关项目机制和当前可用的内置项目的详细说明,可以在QCPAbstractItem的文档中找到

    使用箭头和文字的基本示例

    本示例说明如何创建始终位于rect轴顶部的文本标签以及将绘图坐标中的点与该标签连接的箭头。

     

    // add the text label at the top:
    QCPItemText *textLabel = new QCPItemText(customPlot);
    textLabel->setPositionAlignment(Qt::AlignTop|Qt::AlignHCenter);
    textLabel->position->setType(QCPItemPosition::ptAxisRectRatio);
    textLabel->position->setCoords(0.5, 0); // place position at center/top of axis rect
    textLabel->setText("Text Item Demo");
    textLabel->setFont(QFont(font().family(), 16)); // make font a bit larger
    textLabel->setPen(QPen(Qt::black)); // show black border around text
     
    // add the arrow:
    QCPItemLine *arrow = new QCPItemLine(customPlot);
    arrow->start->setParentAnchor(textLabel->bottom);
    arrow->end->setCoords(4, 1.6); // point to (4, 1.6) in x-y-plot coordinates
    arrow->setHead(QCPLineEnding::esSpikeArrow);

    请注意,即使在拖动绘图范围时,箭头仍保持附着在绘图坐标(4,1.6)上,并相应地旋转/拉伸。这是通过QCustomPlot项目定位的灵活性实现的。可以将项目放置在绘图坐标,绝对像素坐标和轴rect大小的小数单位中。的文档QCPAbstractItemQCPItemPosition更加详细地介绍了如何使用这些不同的可能性。

    与绘图表一样,创建自己的项目也很容易。这可以通过创建自己的QCPAbstractItem子类来完成。请参见QCPAbstractItem文档中的子类化部分。

    项目剪裁

    默认情况下,项目被裁剪到主轴矩形,这意味着它们仅在主轴矩形内部可见。要使某个项目在该轴的矩形外部可见,请通过调用禁用裁剪setClipToAxisRect(false)

    另一方面,如果您希望将项目剪切到其他轴rect,则可以通过进行指定setClipAxisRect。项目的此clipAxisRect属性仅用于剪切行为,并且原则上与项目可能通过其位置成员绑定的坐标轴无关(请参见参考资料)。但是,通常用于裁剪的轴rect也包含用于项目位置的轴。QCPItemPosition::setAxes

    更高级的物品使用

    有关QCustomPlot物品系统可以实现的功能的更高级,更真实的演示,请参阅“特殊用例”教程“带有物品的动态轴标签”

     

    展开全文
  • Python绘制加强版K线图:增加均线及成交量

    万次阅读 多人点赞 2019-01-10 11:06:16
    在之前,我们讲解了如何用Python绘制K线图。当时就有人问能否加入均线元素,...获取之后,我们同时保留两种格式的日期数据:matplotlib需要的float型以及我们坐标轴标签中需要的字符串型。它们分别是下边的trade_dat...

    在之前,我们讲解了如何用Python绘制K线图。当时就有人问能否加入均线元素,当然能啦!不光均线,今天我还要把成交量给加上去。

    获取数据并加工

    为了计算年线(250日均线),我们需要保证数据至少在一年以上,所以我们获取17年以来上证综指的行情数据。

    获取之后,我们同时保留两种格式的日期数据:matplotlib需要的float型以及我们坐标轴标签中需要的字符串型。它们分别是下边的trade_date列和trade_date2列。

    另外我们需要一串连续的数字(最好是从零开始可以作为索引的),用来保证我们的K线图是连续的,也就是下边的dates列。

    对了,别忘了对数据按照日期升序排列,不然得到的可能就是从最新日期开始计算的移动均值了。

    import mpl_finance
    import tushare as ts
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    from matplotlib import ticker
    from matplotlib.pylab import date2num
    import numpy as np
    import matplotlib as mpl
    sns.set()
    mpl.rcParams['font.family'] = 'sans-serif'
    mpl.rcParams['font.sans-serif'] = 'SimHei'
    pro = ts.pro_api()
    
    df = pro.index_daily(ts_code='000001.SH', start_date='20170101')
    df = df.sort_values(by='trade_date', ascending=True)
    df['trade_date2'] = df['trade_date'].copy()
    df['trade_date'] = pd.to_datetime(df['trade_date']).map(date2num)
    df['dates'] = np.arange(0, len(df))
    df.head()
    

    用窗口函数计算移动平均值

    df['5'] = df.close.rolling(5).mean()
    df['20'] = df.close.rolling(20).mean()
    df['30'] = df.close.rolling(30).mean()
    df['60'] = df.close.rolling(60).mean()
    df['120'] = df.close.rolling(120).mean()
    df['250'] = df.close.rolling(250).mean()
    

    绘制K线图

    def format_date(x,pos):
        if x<0 or x>len(date_tickers)-1:
            return ''
        return date_tickers[int(x)]
    
    date_tickers = df.trade_date2.values
    fig, ax = plt.subplots(figsize=(10,5))
    ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
    # 绘制K线图
    mpl_finance.candlestick_ochl(
        ax=ax,
        quotes=df[['dates', 'open', 'close', 'high', 'low']].values,
        width=0.7,
        colorup='r',
        colordown='g',
        alpha=0.7)
    # 绘制均线
    for ma in ['5', '20', '30', '60', '120', '250']:
        plt.plot(df['dates'], df[ma])
    plt.legend()
    ax.set_title('上证综指K线图(2017.1-)', fontsize=20);
    

    由于战线太长,显示效果不是特别好,我们缩短到最近半年左右:

    df2 = df.query('trade_date2 >= "20180601"').reset_index()
    df2['dates'] = np.arange(0, len(df2))
    date_tickers = df2.trade_date2.values
    
    fig, ax = plt.subplots(figsize=(10,5))
    ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
    
    # 绘制K线图
    mpl_finance.candlestick_ochl(
        ax=ax,
        quotes=df2[['dates', 'open', 'close', 'high', 'low']].values,
        width=0.7,
        colorup='r',
        colordown='g',
        alpha=0.7)
    
    # 绘制均线
    for ma in ['5', '20', '30', '60', '120', '250']:
        plt.plot(df2['dates'], df2[ma])
    plt.legend()
    ax.set_title('上证综指K线图(2018.6-)', fontsize=20);
    

    看起来清晰了很多。可以看到,短期30日线压力明显,中长期60日线压力明显。一旦实现有效突破,就算没个大行情,这难熬的熊市也基本上可以宣告尾声了。

    绘制成交量

    你以为这就结束了吗?哈哈,你太天真了。我说过有成交量的,那就肯定会有成交量。

    我们需要用到matplotlib.gridspec来控制子图的位置和大小;然后针对ax1绘制K线图,针对ax2绘制成交量。由于阳线为红色,阴线为绿色,所以我们把成交量的颜色也对应着调整下。

    from matplotlib.gridspec import GridSpec
    
    # 取18.9以来数据
    df2 = df.query('trade_date2 >= "20180601"').reset_index()
    df2['dates'] = np.arange(0, len(df2))
    date_tickers = df2.trade_date2.values
    
    # 控制子图
    figure = plt.figure(figsize=(12, 9))
    gs = GridSpec(3, 1)
    ax1 = plt.subplot(gs[:2, :])
    ax2 = plt.subplot(gs[2, :])
    
    # 绘制K线图
    mpl_finance.candlestick_ochl(
        ax=ax1,
        quotes=df2[['dates', 'open', 'close', 'high', 'low']].values,
        width=0.7,
        colorup='r',
        colordown='g',
        alpha=0.7)
    ax1.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
    
    # 绘制均线
    for ma in ['5', '20', '30', '60', '120', '250']:
        ax1.plot(df2['dates'], df2[ma])
    ax1.legend()
    ax1.set_title('上证综指K线图(2018.6-)', fontsize=20)
    ax1.set_ylabel('指数')
    
    # 绘制成交量
    ax2.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
    df2['up'] = df.apply(lambda row: 1 if row['close'] >= row['open'] else 0, axis=1)
    ax2.bar(df2.query('up == 1')['dates'], df2.query('up == 1')['vol'], color='r', alpha=0.7)
    ax2.bar(df2.query('up == 0')['dates'], df2.query('up == 0')['vol'], color='g', alpha=0.7)
    ax2.set_ylabel('成交量')
    #plt.xticks(date_tickers);
    

    这样看起来不真切,我们调整到9月份开始来看看:

    好了,K线图的绘制就暂时告一段落。之后如果需要整合各种指标的话,我们再来绘制一个更加强大的版本,敬请期待哦!

    展开全文
  • //设置x轴和y轴标签的颜色 renderer.setXLabelsColor(Color.RED); renderer.setYLabelsColor(0,Color.RED); renderer.setLabelsTextSize(20); //设置图标的标题 renderer.setChartTitleTextSize(40); ...
  • D3.js学习(二)

    2018-06-15 09:58:00
    上一节中我们已经画出了一个基本的图表,不过忘了给坐标添加标签了,所以在本节中我们要给坐标加上标签,目标效果...先来看如何给x添加标签 //增加一个x标签 svg.append("text") .attr("transf...

    上一节中我们已经画出了一个基本的图表,不过忘了给坐标轴添加标签了,所以在本节中我们要给坐标轴加上标签,目标效果如下

    image

    给X轴添加标签

    很明显,标签是不是一个text内容块啊,所以我们只要在svg中添加一个text然后再给这个text定位和指定内容不就行了么?先来看如何给x轴添加标签

    //增加一个x轴的标签
    svg.append("text")
        .attr("transform", "translate(" + (width/2) + "," + (height + margin.bottom) + ")")
        .style("text-anchor", "middle")
        .text("Date");

    上面代码可能又两个地方需要解释,第一,transform属性,详细的介绍可以看我w3c的定义,这里我们用到的是他的一个translate属性,也就是移动,第一个参数是相对于原点在x轴上的位移距离,第二个是相对于原点在y轴上的位移距离;第二,text-anchor属性,是指文本相对于插件点的对齐方式,我们这里用到的是中间对齐,也就是说文本的中点与x轴的中点(文本插入点)对齐.

     

    给Y轴添加标签

    同理,给y轴添加一个标签

    复制代码
    //增加一个y轴的标签
    svg.append("text")
        .attr("transform", "rotate(-90)")
        .attr("y", 0 - margin.left)
        .attr("x", 0 - (height/2))
        .attr("dy", "1em")
        .style("text-anchor" , "middle")
        .text("Value");
    复制代码
    这里的rotate值表示文本相对于原点的旋转角度,负数表示逆时针旋转,dy属性表示文本在y轴上的平移距离。

    给图表添加标题

    添加标题跟添加坐标轴的标签其实是一样的,只不过定位有所不同而已

    复制代码
    //给图表添加一个标题
    svg.append("text")
        .attr("x", (width/2))
        .attr("y", 0 - (margin.top /2 ))
        .attr("text-anchor", "middle")
        .style("font-size", "16px")
        .style("text-decoration", "underline")
        .text("一个简单的图表");
    复制代码

    效果图:
    image

    这样,坐标轴的标签和图表的标题我们就添加上啦。下一节中,我们将对图表中的path进行处理!

    转载于:https://www.cnblogs.com/magic-xxj/p/9186081.html

    展开全文
  • 图片切换

    2021-03-02 19:59:48
    HTML代码就几个标签,还有一个span标签 看一下css的代码 ...通过 scale() 方法,元素的尺寸会增加或减少,根据给定的宽度(X )和高度(Y )参数, background-position 规定背景图像的位置 ...
  • 中文版Excel.2007图表宝典 1/2

    热门讨论 2012-04-06 18:49:24
    8.3.2 使用标签间隔不相等的坐标/226 8.4 柱形图和条形图的变化形式/227 8.4.1 堆积柱形图的变化形式/227 8.4.2 创建阶梯式图表/229 8.4.3 改变柱形的宽度/231 8.4.4 根据条件设置柱形颜色/232 8.4.5 创建一个对比...
  • 中文版Excel.2007图表宝典 2/2

    热门讨论 2012-04-06 19:01:36
    8.3.2 使用标签间隔不相等的坐标/226 8.4 柱形图和条形图的变化形式/227 8.4.1 堆积柱形图的变化形式/227 8.4.2 创建阶梯式图表/229 8.4.3 改变柱形的宽度/231 8.4.4 根据条件设置柱形颜色/232 8.4.5 创建一个对比...
  • IDL帮助(中文).doc

    热门讨论 2011-03-14 00:21:36
    组件程序如何对事件作出反应 213 编写组件定义模块 213 定义和创建程序组件 214 在屏幕上实现组件 216 使绘图组件成为当前图形窗口 216 在绘图组件窗口上显示图形 216 保存程序运行时所需要的信息 216 创建事件循环...
  • echart 设置 Y轴标签在柱状图上垂直居中 失效 --2019-10-22 微信 IOS微信分享问题(h5页面),签名报错invalid signature --2019-09-25 IOS调用微信扫一扫scanQRCode报错the permission value is offline ...
  • IDL入门教程.doc

    2011-09-21 18:29:16
    组件程序如何对事件作出反应 213 编写组件定义模块 213 定义和创建程序组件 214 在屏幕上实现组件 216 使绘图组件成为当前图形窗口 216 在绘图组件窗口上显示图形 216 保存程序运行时所需要的信息 216 创建事件循环...
  • IDL编程语言入门教程

    2009-04-14 22:11:35
    组件程序如何对事件作出反应 213 编写组件定义模块 213 定义和创建程序组件 214 在屏幕上实现组件 216 使绘图组件成为当前图形窗口 216 在绘图组件窗口上显示图形 216 保存程序运行时所需要的信息 216 创建事件循环...
  • 70款经典Dreamweaver插件

    2011-09-21 12:42:27
    persistent_layers 不管滚动条如何拉动,这个层在窗口中的位置始终固定不变 P7_PowerToys_18 可以让你方便的插入代码,用开始和结束标签加入既存的代码等 justsoalt 用于在你的图片上加入alt标记,它可以利用模板一...
  • Dreamweaver 插件集

    2012-02-04 16:16:36
    不管滚动条如何拉动,这个层在窗口中的位置始终固定不变 P7_PowerToys_18 可以让你方便的插入代码,用开始和结束标签加入既存的代码等 justsoalt 用于在你的图片上加入alt标记,它可以利用模板一次为多张图片加入alt...
  • surfer 9.11汉化版.part2

    热门讨论 2011-03-23 08:44:20
    进行操作,图层的图形现在支持透明显示(图2),这是增加的比较令人激动的功能。对于 不同对象之间也提供了类CorelDraw的群组功能,越来越向专业绘图软件靠近了(就是以前 的Combined)。 4、在状态栏中显示x、y...
  • 进行操作,图层的图形现在支持透明显示(图2),这是增加的比较令人激动的功能。对于 不同对象之间也提供了类CorelDraw的群组功能,越来越向专业绘图软件靠近了(就是以前 的Combined)。 4、在状态栏中显示x、y...
  • surfer 9.11 汉化.part1

    热门讨论 2011-03-23 08:46:07
    进行操作,图层的图形现在支持透明显示(图2),这是增加的比较令人激动的功能。对于 不同对象之间也提供了类CorelDraw的群组功能,越来越向专业绘图软件靠近了(就是以前 的Combined)。 4、在状态栏中显示x、y...
  • surfer9.11汉化.part3

    热门讨论 2011-03-23 08:47:20
    进行操作,图层的图形现在支持透明显示(图2),这是增加的比较令人激动的功能。对于 不同对象之间也提供了类CorelDraw的群组功能,越来越向专业绘图软件靠近了(就是以前 的Combined)。 4、在状态栏中显示x、y...
  • 涵盖了各种仪表盘、进度条、进度球、指南针、曲线图、标尺、温度计、导航条、导航栏,flatui、高亮按钮、滑动选择器、农历、广告轮播、饼状图、环形图、时间、拓展控件、增强控件等。 每个类都是独立的一个.h...

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

如何增加轴标签