示例#1
0
    def __call__(self, inputs):
        from pylab import text
        from matplotlib.font_manager import FontProperties as FP
        kwds = {}
        #kwds['text'] = self.get_input('text')
        kwds['fontsize'] = self.get_input('fontsize')
        kwds['alpha'] = self.get_input('alpha')
        kwds['color'] = self.get_input('color')
        kwds['backgroundcolor'] = self.get_input('backgroundcolor')
        kwds['rotation'] = self.get_input('rotation')
        kwds['fontproperties'] = FP(**self.get_input('fontproperties'))
        for key, value in self.get_input('kwargs').iteritems():
            try:
                kwds[key] = value
            except:
                print 'key already defined. skip it'
                pass

        #res = text(0,0, self.get_input('text'), **kwds)

        return (kwds, )
示例#2
0
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 14 13:14:08 2020

@author: cdragon-ljl
"""

from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties as FP

#添加中文字体
font = FP(fname=r"c:\windows\fonts\simsun.ttc", size=15)

plt.figure(figsize=(30, 10), dpi=80)

x_3 = range(1, 32)
y_3 = [
    11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17,
    20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23
]
x_10 = range(41, 72)
y_10 = [
    26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22,
    15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6
]

#绘制散点图
plt.scatter(x_3, y_3, label="3月份")
plt.scatter(x_10, y_10, label="10月份")

#调整x轴的刻度
示例#3
0
data = dataset.Appliances
#print(data.head())
#print(data.describe())

# 统计各列缺失值总数
#missing = dataset.isnull().sum()
#print(missing)

# 绘图查看
font1 = {
    'family': 'Times New Roman',
    'color': 'k',
    'weight': 'normal',
    'size': 15,
}
font2 = FP('Times New Roman', size=15)
'''
plt.figure(figsize=(10,4))
plt.hist(data,bins=50)
plt.xlabel('Wh',fontdict=font1)
plt.ylabel('Frequency',fontdict=font1)
plt.xticks([0,200,400,600,800,1000],['0','200','400','600','800','1000'],fontproperties=font2)
plt.yticks([0,1000,2000,3000,4000,5000,6000,],['0','1000','2000','3000','4000','5000','6000'],fontproperties=font2)
plt.savefig('图3直方图.svg',bbox_inches='tight')
'''
'''
plt.figure(figsize=(2,10))
sns.boxplot(data=dataset.iloc[:,1:2])
#plt.xlabel('load',fontdict=font1)
plt.xticks([])
plt.xlabel('Appliances',fontdict=font1)
"""
    Using python to draw tracking results compared with groundtruth
"""

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties as FP
import numpy as np

efp = FP('Times New Roman', size=13)

#### load groundtruth txt file
gt = np.loadtxt("groundtruth.txt")
print(type(gt), gt.shape)

timestamp = gt[:, 0]
gt_pos_x = gt[:, 1]
gt_pos_y = gt[:, 2]
gt_pos_z = gt[:, 3]
gt_heading = gt[:, 4]

### load track results
track = np.loadtxt("track_results.txt")
tr_pos_x = track[:, 1]
tr_pos_y = track[:, 2]
tr_v = track[:, 3]
tr_heading = track[:, 4]
tr_yaw_rate = track[:, 5]

### ------Begin plot-------
plt.figure('position')
plt.grid(linestyle="-.")
示例#5
0
def plot_ti_dhdl(dhdl_data, labels=None, colors=None, units='kT', ax=None):
    '''Plot the dhdl of TI.

    Parameters
    ----------
    dhdl_data : :class:`~alchemlyb.estimators.TI` or list
        One or more :class:`~alchemlyb.estimators.TI` estimator, where the
        dhdl value will be taken from.
    labels : List
        list of labels for labelling all the alchemical transformations.
    colors : List
        list of colors for plotting all the alchemical transformations.
        Default: ['r', 'g', '#7F38EC', '#9F000F', 'b', 'y']
    units : str
        The label for the unit of the estimate. Default: "kT"
    ax : matplotlib.axes.Axes
        Matplotlib axes object where the plot will be drawn on. If ``ax=None``,
        a new axes will be generated.

    Returns
    -------
    matplotlib.axes.Axes
        An axes with the TI dhdl drawn.

    Note
    ----
    The code is taken and modified from
    `Alchemical Analysis <https://github.com/MobleyLab/alchemical-analysis>`_.


    .. versionchanged:: 0.5.0
        The `units` will be used to change the underlying data instead of only
        changing the figure legend.

    .. versionadded:: 0.4.0
    '''
    # Make it into a list
    # separate_dhdl method is used so that the input for the actual plotting
    # Function are a uniformed list of series object which only contains one
    # lambda.
    if not isinstance(dhdl_data, list):
        dhdl_list = dhdl_data.separate_dhdl()
    else:
        dhdl_list = []
        for dhdl in dhdl_data:
            dhdl_list.extend(dhdl.separate_dhdl())

    # Convert unit
    new_unit = []
    convert = get_unit_converter(units)
    for dhdl in dhdl_list:
        new_unit.append(convert(dhdl))

    dhdl_list = new_unit
    if ax is None:
        fig, ax = plt.subplots(figsize=(8, 6))

    ax.spines['bottom'].set_position('zero')
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_ticks_position('left')

    for k, spine in ax.spines.items():
        spine.set_zorder(12.2)

    # Make level names
    if labels is None:
        lv_names2 = []
        for dhdl in dhdl_list:
            # Assume that the dhdl has only one columns
            lv_names2.append(dhdl.name.capitalize())
    else:
        if len(labels) == len(dhdl_list):
            lv_names2 = labels
        else:  # pragma: no cover
            raise ValueError(
                'Length of labels ({}) should be the same as the number of data ({})'
                .format(len(labels), len(dhdl_list)))

    if colors is None:
        colors = ['r', 'g', '#7F38EC', '#9F000F', 'b', 'y']
    else:
        if len(colors) >= len(dhdl_list):
            pass
        else:  # pragma: no cover
            raise ValueError(
                'Number of colors ({}) should be larger than the number of data ({})'
                .format(len(labels), len(dhdl_list)))

    # Get the real data out
    xs, ndx, dx = [0], 0, 0.001
    min_y, max_y = 0, 0
    for dhdl in dhdl_list:
        x = dhdl.index.values
        y = dhdl.values.ravel()

        min_y = min(y.min(), min_y)
        max_y = max(y.max(), max_y)

        for i in range(len(x) - 1):
            if i % 2 == 0:
                ax.fill_between(x[i:i + 2] + ndx,
                                0,
                                y[i:i + 2],
                                color=colors[ndx],
                                alpha=1.0)
            else:
                ax.fill_between(x[i:i + 2] + ndx,
                                0,
                                y[i:i + 2],
                                color=colors[ndx],
                                alpha=0.5)

        xlegend = [-100 * wnum for wnum in range(len(lv_names2))]
        ax.plot(xlegend, [0 * wnum for wnum in xlegend],
                ls='-',
                color=colors[ndx],
                label=lv_names2[ndx])
        xs += (x + ndx).tolist()[1:]
        ndx += 1

    # Make sure the tick labels are not overcrowded.
    xs = np.array(xs)
    dl_mat = np.array([xs - i for i in xs])
    ri = range(len(xs))

    def getInd(r=ri, z=[0]):
        primo = r[0]
        min_dl = ndx * 0.02 * 2**(primo > 10)
        if dl_mat[primo].max() < min_dl:
            return z
        for i in r:  # pragma: no cover
            for j in range(len(xs)):
                if dl_mat[i, j] > min_dl:
                    z.append(j)
                    return getInd(ri[j:], z)

    xt = []
    for i in range(len(xs)):
        if i in getInd():
            xt.append(i)
        else:
            xt.append('')

    plt.xticks(xs[1:], xt[1:], fontsize=10)
    ax.yaxis.label.set_size(10)

    # Remove the abscissa ticks and set up the axes limits.
    for tick in ax.get_xticklines():
        tick.set_visible(False)
    ax.set_xlim(0, ndx)
    min_y *= 1.01
    max_y *= 1.01

    # Modified so that the x label won't conflict with the lambda label
    min_y -= (max_y - min_y) * 0.1

    ax.set_ylim(min_y, max_y)

    for i, j in zip(xs[1:], xt[1:]):
        ax.annotate(
            ('%.2f' % (i - 1.0 if i > 1.0 else i) if not j == '' else ''),
            xy=(i, 0),
            size=10,
            rotation=90,
            va='bottom',
            ha='center',
            color='#151B54')
    if ndx > 1:
        lenticks = len(ax.get_ymajorticklabels()) - 1
        if min_y < 0: lenticks -= 1
        if lenticks < 5:  # pragma: no cover
            from matplotlib.ticker import AutoMinorLocator as AML
            ax.yaxis.set_minor_locator(AML())
    ax.grid(which='both', color='w', lw=0.25, axis='y', zorder=12)
    ax.set_ylabel(
        r'$\langle{\frac{\partial U}{\partial\lambda}}\rangle_{\lambda}$' +
        '({})'.format(units),
        fontsize=20,
        color='#151B54')
    ax.annotate(r'$\mathit{\lambda}$',
                xy=(0, 0),
                xytext=(0.5, -0.05),
                size=18,
                textcoords='axes fraction',
                va='top',
                ha='center',
                color='#151B54')
    lege = ax.legend(prop=FP(size=14), frameon=False, loc=1)
    for l in lege.legendHandles:
        l.set_linewidth(10)
    return ax
示例#6
0
import numpy as np
import csv
import math
from scipy import interpolate
from matplotlib import pyplot as plt
from matplotlib.ticker import LinearLocator, MultipleLocator, FormatStrFormatter
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import seaborn as sns
from sklearn.preprocessing import MinMaxScaler

from matplotlib.font_manager import FontProperties as FP

plt.rc('font', family='Times New Roman')
font_TNM = FP(fname=r"C:\Windows\Fonts\times.ttf", size=10.5)

Altitude_scalar = 12.44
Latitude_scalar = 52.13
Longitude_scalar = 39.78
Altitude_xishu = 1.32
Latitude_xishu = 1.08
Longitude_xishu = 1.08

# pred_true_values line
"""

data_LSTM = pd.read_csv(r"D:\轨迹预测\prediction\LSTM\pred_y.csv")
data_GRU = pd.read_csv(r"D:\轨迹预测\prediction\GRU\pred_y.csv")
data_BP = pd.read_csv(r"D:\轨迹预测\prediction\BP\pred_y10.csv")
data_SVR = pd.read_csv(r"D:\轨迹预测\prediction\SVR\pred_y.csv")
import numpy as np
import pandas as pd
import pymc as pm
import os
import matplotlib.pyplot as plt
from pylab import *
from scipy.stats.mstats import mquantiles
from matplotlib.font_manager import FontManager as FM
from matplotlib.font_manager import FontProperties as FP
myfont = FP(fname='D://Lib//site-packages//matplotlib//'
            'mpl-data//fonts//ttf//vera.ttf')
mpl.rcParams['font.sans-serif'] = ['SimHei']


# 逻辑斯蒂函数
def logistic(x, beta, alpha=0):
    return 1.0 / (1.0 + np.exp((beta * x) + alpha))


# 散点图
def scatter_figure(data, index):

    plt.scatter(data[:, 0], data[:, 2], color='black', alpha=0.5)
    plt.yticks([0, 1])
    plt.ylabel(u"销售点", fontproperties=myfont)
    plt.xlabel("属性距离", fontproperties=myfont)
    plt.title(u'销售点与每个县城相关属性距离散点图', fontproperties=myfont)
    plt.xticks(data[:, 0],
               index,
               size='small',
               fontproperties=myfont,
示例#8
0
"""
 Learn how to use subplot to draw multiple plots in one figure
 References: https://matplotlib.org/gallery/subplots_axes_and_figures/subplot.html
"""
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties as FP
import numpy as np

mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams['font.sans-serif'] = 'NSimSun,Times New Roman'
efp = FP('Times New Roman')
x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'o-')
plt.title('A tale of 2 subplots', fontweight='bold', fontproperties=efp)
plt.ylabel('Damped oscillation', fontproperties=efp)

plt.subplot(2, 1, 2)
plt.plot(x2, y2, '.-')
plt.xlabel('time [s]')
plt.ylabel('Undamped', fontproperties=efp)

plt.show()
示例#9
0
    d = y - gt_pos_y[idx]
    delta_gt_pos_y.append(d)

vx = [x / t for x, t in zip(delta_gt_pos_x, delta_t)]
vy = [y / t for y, t in zip(delta_gt_pos_y, delta_t)]
v = [cmath.sqrt(a**2 + b**2) for a, b in zip(vx, vy)]
v.insert(0, 0.0)

### load track results
track = np.loadtxt("track_results.txt")
tr_pos_x = track[:, 1]
tr_pos_y = track[:, 2]
tr_v = track[:, 3]
tr_heading = track[:, 4]
tr_yaw_rate = track[:, 5]

frame = np.arange(len(v))

mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams['font.sans-serif'] = 'SimHei,Times New Roman'
cfp = FP('SimHei', size=15)

plt.figure("v")
plt.grid(linestyle="-.", color='gray')
plt.plot(frame, tr_v * 3.6, '-', color='blue', label="UKF输出")
plt.plot(frame, np.array(v) * 3.6, color='red', label="直接计算")
plt.xlabel("Frames", fontsize=15)
plt.ylabel("Velocity [km/h]", fontsize=15)
plt.legend(prop=cfp, ncol=2)
# plt.savefig("v.svg", format="svg")
plt.show()
示例#10
0
def plot_dF_state(estimators,
                  labels=None,
                  colors=None,
                  units='kT',
                  orientation='portrait',
                  nb=10):
    '''Plot the dhdl of TI.

    Parameters
    ----------
    estimators : :class:`~alchemlyb.estimators` or list
        One or more :class:`~alchemlyb.estimators`, where the
        dhdl value will be taken from. For more than one estimators
        with more than one alchemical transformation, a list of list format
        is used.
    labels : List
        list of labels for labelling different estimators.
    colors : List
        list of colors for plotting different estimators.
    units : str
        The unit of the estimate. Default: "kT"
    orientation : string
        The orientation of the figure. Can be `portrait` or `landscape`
    nb : int
        Maximum number of dF states in one row in the `portrait` mode

    Returns
    -------
    matplotlib.figure.Figure
        An Figure with the dF states drawn.

    Note
    ----
    The code is taken and modified from
    `Alchemical Analysis <https://github.com/MobleyLab/alchemical-analysis>`_.


    .. versionchanged:: 0.5.0
        The `units` will be used to change the underlying data instead of only
        changing the figure legend.

    .. versionadded:: 0.4.0
    '''
    try:
        len(estimators)
    except TypeError:
        estimators = [
            estimators,
        ]

    formatted_data = []
    for dhdl in estimators:
        try:
            len(dhdl)
            formatted_data.append(dhdl)
        except TypeError:
            formatted_data.append([
                dhdl,
            ])
    estimators = formatted_data

    # Get the dF
    dF_list = []
    error_list = []
    max_length = 0
    convert = get_unit_converter(units)
    for dhdl_list in estimators:
        len_dF = sum([len(dhdl.delta_f_) - 1 for dhdl in dhdl_list])
        if len_dF > max_length:
            max_length = len_dF
        dF = []
        error = []
        for dhdl in dhdl_list:
            for i in range(len(dhdl.delta_f_) - 1):
                dF.append(convert(dhdl.delta_f_).iloc[i, i + 1])
                error.append(convert(dhdl.d_delta_f_).iloc[i, i + 1])

        dF_list.append(dF)
        error_list.append(error)

    # Get the determine orientation
    if orientation == 'landscape':
        if max_length < 8:
            fig, ax = plt.subplots(figsize=(8, 6))
        else:
            fig, ax = plt.subplots(figsize=(max_length, 6))
        axs = [
            ax,
        ]
        xs = [
            np.arange(max_length),
        ]
    elif orientation == 'portrait':
        if max_length < nb:
            xs = [
                np.arange(max_length),
            ]
            fig, ax = plt.subplots(figsize=(8, 6))
            axs = [
                ax,
            ]
        else:
            xs = np.array_split(np.arange(max_length), max_length / nb + 1)
            fig, axs = plt.subplots(nrows=len(xs), figsize=(8, 6))
        mnb = max([len(i) for i in xs])
    else:
        raise ValueError(
            "Not recognising {}, only supports 'landscape' or 'portrait'.".
            format(orientation))

    # Sort out the colors
    if colors is None:
        colors_dict = {
            'TI': '#C45AEC',
            'TI-CUBIC': '#33CC33',
            'DEXP': '#F87431',
            'IEXP': '#FF3030',
            'GINS': '#EAC117',
            'GDEL': '#347235',
            'BAR': '#6698FF',
            'UBAR': '#817339',
            'RBAR': '#C11B17',
            'MBAR': '#F9B7FF'
        }
        colors = []
        for dhdl in estimators:
            dhdl = dhdl[0]
            if isinstance(dhdl, TI):
                colors.append(colors_dict['TI'])
            elif isinstance(dhdl, BAR):
                colors.append(colors_dict['BAR'])
            elif isinstance(dhdl, MBAR):
                colors.append(colors_dict['MBAR'])
    else:
        if len(colors) >= len(estimators):
            pass
        else:
            raise ValueError(
                'Number of colors ({}) should be larger than the number of data ({})'
                .format(len(colors), len(estimators)))

    # Sort out the labels
    if labels is None:
        labels = []
        for dhdl in estimators:
            dhdl = dhdl[0]
            if isinstance(dhdl, TI):
                labels.append('TI')
            elif isinstance(dhdl, BAR):
                labels.append('BAR')
            elif isinstance(dhdl, MBAR):
                labels.append('MBAR')
    else:
        if len(labels) == len(estimators):
            pass
        else:
            raise ValueError(
                'Length of labels ({}) should be the same as the number of data ({})'
                .format(len(labels), len(estimators)))

    # Plot the figure
    width = 1. / (len(estimators) + 1)
    elw = 30 * width
    ndx = 1
    for x, ax in zip(xs, axs):
        lines = []
        for i, (dF, error) in enumerate(zip(dF_list, error_list)):
            y = [dF[j] for j in x]
            ye = [error[j] for j in x]
            if orientation == 'landscape':
                lw = 0.1 * elw
            elif orientation == 'portrait':
                lw = 0.05 * elw
            line = ax.bar(x + len(lines) * width,
                          y,
                          width,
                          color=colors[i],
                          yerr=ye,
                          lw=lw,
                          error_kw=dict(elinewidth=elw,
                                        ecolor='black',
                                        capsize=0.5 * elw))
            lines += (line[0], )
        for dir in ['left', 'right', 'top', 'bottom']:
            if dir == 'left':
                ax.yaxis.set_ticks_position(dir)
            else:
                ax.spines[dir].set_color('none')

        if orientation == 'landscape':
            plt.yticks(fontsize=8)
            ax.set_xlim(x[0] - width, x[-1] + len(lines) * width)
            plt.xticks(x + 0.5 * width * len(estimators),
                       tuple(['%d--%d' % (i, i + 1) for i in x]),
                       fontsize=8)
        elif orientation == 'portrait':
            plt.yticks(fontsize=10)
            ax.xaxis.set_ticks([])
            for i in x + 0.5 * width * len(estimators):
                ax.annotate(r'$\mathrm{%d-%d}$' % (i, i + 1),
                            xy=(i, 0),
                            xycoords=('data', 'axes fraction'),
                            xytext=(0, -2),
                            size=10,
                            textcoords='offset points',
                            va='top',
                            ha='center')
            ax.set_xlim(x[0] - width,
                        x[-1] + len(lines) * width + (mnb - len(x)))
        ndx += 1
    x = np.arange(max_length)

    ax = plt.gca()

    for tick in ax.get_xticklines():
        tick.set_visible(False)
    if orientation == 'landscape':
        leg = plt.legend(lines,
                         labels,
                         loc=3,
                         ncol=2,
                         prop=FP(size=10),
                         fancybox=True)
        plt.title('The free energy change breakdown', fontsize=12)
        plt.xlabel('States', fontsize=12, color='#151B54')
        plt.ylabel(r'$\Delta G$ ({})'.format(units),
                   fontsize=12,
                   color='#151B54')
    elif orientation == 'portrait':
        leg = ax.legend(lines,
                        labels,
                        loc=0,
                        ncol=2,
                        prop=FP(size=8),
                        title=r'$\Delta G$ ({})'.format(units) +
                        r'$\mathit{vs.}$ lambda pair',
                        fancybox=True)

    leg.get_frame().set_alpha(0.5)
    return fig
示例#11
0
def plot_convergence(*data, units='kT', ax=None):
    """Plot the forward and backward convergence.

    The input could be the result from
    :func:`~alchemlyb.convergence.forward_backward_convergence` or it could
    be given explicitly as `forward`, `forward_error`, `backward`,
    `backward_error`.

    `forward`: A list of free energy estimate from the first X% of data,
    where `forward_error` is the corresponding error.
    
    `backward`: A list of free energy estimate from the last X% of data.,
    where `backward_error` is the corresponding error.

    These four array_like objects should have the same
    shape and can be used as input for the
    :func:`matplotlib.pyplot.errorbar`.

    Parameters
    ----------
    data : Dataframe or 4 array_like objects
        Output Dataframe from
        :func:`~alchemlyb.convergence.forward_backward_convergence`.
        Or given explicitly as `forward`, `forward_error`, `backward`,
        `backward_error` see :ref:`plot_convergence <plot_convergence>`.
    units : str
        The label for the unit of the estimate. Default: "kT"
    ax : matplotlib.axes.Axes
        Matplotlib axes object where the plot will be drawn on. If ``ax=None``,
        a new axes will be generated.

    Returns
    -------
    matplotlib.axes.Axes
        An axes with the forward and backward convergence drawn.

    Note
    ----
    The code is taken and modified from
    `Alchemical Analysis <https://github.com/MobleyLab/alchemical-analysis>`_.

    If `data` is not an :class:pandas.Dataframe` produced by
    :func:`~alchemlyb.convergence.forward_backward_convergence`,
    the unit will be adjusted according to the units
    variable. Otherwise, the units variable is for labelling only.
    Changing it doesn't change the unit of the underlying variable.


    .. versionchanged:: 0.6.0
        data now takes in dataframe

    .. versionadded:: 0.4.0
    """
    if len(data) == 1 and isinstance(data[0], pd.DataFrame):
        dataframe = get_unit_converter(units)(data[0])
        forward = dataframe['Forward'].to_numpy()
        forward_error = dataframe['Forward_Error'].to_numpy()
        backward = dataframe['Backward'].to_numpy()
        backward_error = dataframe['Backward_Error'].to_numpy()
    else:
        try:
            forward, forward_error, backward, backward_error = data
        except ValueError:  # pragma: no cover
            raise ValueError('Ensure all four of forward, forward_error, '
                             'backward, backward_error are supplied.')

    if ax is None:  # pragma: no cover
        fig, ax = plt.subplots(figsize=(8, 6))

    plt.setp(ax.spines['bottom'], color='#D2B9D3', lw=3, zorder=-2)
    plt.setp(ax.spines['left'], color='#D2B9D3', lw=3, zorder=-2)

    for dire in ['top', 'right']:
        ax.spines[dire].set_color('none')

    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_ticks_position('left')

    f_ts = np.linspace(0, 1, len(forward) + 1)[1:]
    r_ts = np.linspace(0, 1, len(backward) + 1)[1:]

    line0 = ax.fill_between([0, 1],
                            backward[-1] - backward_error[-1],
                            backward[-1] + backward_error[-1],
                            color='#D2B9D3',
                            zorder=1)
    line1 = ax.errorbar(
        f_ts,
        forward,
        yerr=forward_error,
        color='#736AFF',
        lw=3,
        zorder=2,
        marker='o',
        mfc='w',
        mew=2.5,
        mec='#736AFF',
        ms=12,
    )
    line2 = ax.errorbar(
        r_ts,
        backward,
        yerr=backward_error,
        color='#C11B17',
        lw=3,
        zorder=3,
        marker='o',
        mfc='w',
        mew=2.5,
        mec='#C11B17',
        ms=12,
    )

    plt.xticks(r_ts[::2], fontsize=10)
    plt.yticks(fontsize=10)

    ax.legend((line1[0], line2[0]), ('Forward', 'Reverse'),
              loc=9,
              prop=FP(size=18),
              frameon=False)
    ax.set_xlabel(r'Fraction of the simulation time',
                  fontsize=16,
                  color='#151B54')
    ax.set_ylabel(r'$\Delta G$ ({})'.format(units),
                  fontsize=16,
                  color='#151B54')
    plt.xticks(f_ts, ['%.2f' % i for i in f_ts])
    plt.tick_params(axis='x', color='#D2B9D3')
    plt.tick_params(axis='y', color='#D2B9D3')
    return ax
示例#12
0
del a_limit['banci12']
'''
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
from matplotlib.font_manager import FontProperties as FP

mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams[
    'font.sans-serif'] = 'NSimSun,Times New Roman'  #//中文除外的设置成New Roman,中文设置成宋体

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

fig = plt.figure()
cfp = FP('NSimSun', size=12)
efp = FP('Times New Roman', size=12)

ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)

ax1.plot(a, color='black')
ax1.set_ylim([200, 1200])
ax1.set_yticklabels(['250', '250', '500', '750', '1 000'], fontproperties=efp)

ax1.set_xticks(range(0, 12))
ax1.set_xticklabels(range(1, 12))
ax1.set_xlabel(u'站点', fontsize=13.5)
ax1.set_ylabel(u'车头时距/s', fontsize=13.5)