Python Matplotlib使用x轴标签正确对齐并匹配系列和错误的颜色进行打印

Python Matplotlib使用x轴标签正确对齐并匹配系列和错误的颜色进行打印,python,pandas,matplotlib,plot,Python,Pandas,Matplotlib,Plot,我希望使用Matplotlib从Pandas数据帧绘制一些数据。我需要控制地块的各种属性。我对两种属性有困难: a。自定义x轴标签的正确间距 B如何用相同的颜色绘制数据系列及其错误条 我在Python中有以下数据帧: x = pd.DataFrame(np.random.rand(4,5), columns = list('ABCDE')) y = pd.DataFrame(np.random.rand(4,5), columns = list('ABCDE')) x_err = pd.Data

我希望使用Matplotlib从Pandas数据帧绘制一些数据。我需要控制地块的各种属性。我对两种属性有困难:

a。自定义x轴标签的正确间距 B如何用相同的颜色绘制数据系列及其错误条

我在Python中有以下数据帧:

x = pd.DataFrame(np.random.rand(4,5), columns = list('ABCDE'))
y = pd.DataFrame(np.random.rand(4,5), columns = list('ABCDE'))
x_err = pd.DataFrame(np.random.rand(4,5), columns = list('ABCDE'))
y_err = pd.DataFrame(np.random.rand(4,5), columns = list('ABCDE'))
x.insert(0,'Name',['Temp_C','Pressure_Rear','Barometric_High','Facility_depletion_rate']
y.insert(0,'Name',['Temp_C','Pressure_Rear','Barometric_High','Facility_depletion_rate']
x_err.insert(0,'Name',['Temp_C','Pressure_Rear','Barometric_High','Facility_depletion_rate']
y_err.insert(0,'Name',['Temp_C','Pressure_Rear','Barometric_High','Facility_depletion_rate']
在数据框
x
中,每列给出x坐标。在数据帧
y
中,每列给出相应的y坐标

我希望在散点图中绘制y与x,其中点是连接的y线,如下图所示: 我还需要放置错误条(
x\u err
是x错误,
y\u err
是y\u错误)

在每个数据帧中,有5列。列标题必须位于图例中,并且x轴需要有标签。 x轴标签应为“温度C”“后压力”“气压高”“设施消耗率”

以下是我的代码,本文末尾显示了一个示例输出:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pylab as pl

fig = plt.figure(1)
ax = fig.add_subplot(111)
fig.set_facecolor('white')

for i in range(1,len(x.columns.tolist())):
    ax.errorbar(x.iloc[:,i], y.iloc[:,i], yerr=y_err.iloc[:,i], xerr=x_err.iloc[:,i], fmt='o') #generate plot for each set of errors (x and y) in the x-variable column list
    plt.plot(x.iloc[:,i], y.iloc[:,i], linestyle='-', marker='o', linewidth=1.5, label = x.columns.tolist()[i])

ttl = 'Room conditions - tracking monitor'
xtitle = 'Type of reading'
ytitle = 'Reading value (units)'
title_font = {'fontname':'Times New Roman', 'size':'28', 'color':'black', 'weight':'bold','verticalalignment':'bottom'} #Bottom vertical alignment for more space
axis_font = {'fontname':'Constantia', 'size':'26'}
axis_tick_font = {'fontname':'Times New Roman', 'size':'20'}

#plt.legend(loc='upper left')
ax.set_xticklabels(x.Name.tolist())
ax.tick_params(axis='x', pad=10)

plt.title(ttl, **title_font)
plt.xlabel(xtitle,**axis_font)
plt.ylabel(ytitle,**axis_font)
plt.xticks(**axis_tick_font)
plt.yticks(**axis_tick_font)

params = {'legend.fontsize': 20} #set legend properties
pl.rcParams.update(params)
plt.legend(loc = 1, prop={'family':title_font['fontname']}, numpoints = 1)

plt.show()
以下是我遇到的两个问题以及与之相关的问题:

  • x轴标签完全对齐错误。有办法去吗 打印标签,以便:

    a。它们与数据点对齐。这意味着x轴标签应与数据框
    x
    每列中给出的x坐标对齐
    x.iloc[:,1],y.iloc[:,1]
    是数据集A的x和y坐标,
    x.iloc[:,2],y.iloc[:,2]
    是数据集B的x和y坐标。我需要x轴标签仅与
    x.iloc[:,1],y.iloc[:,1]
    对齐

    b。标签彼此之间以及左右边框之间的间距相等

  • 错误条的颜色与数据系列的颜色不同。例如,如果数据系列'A'为蓝色,是否有办法强制'A'的错误条也为蓝色


  • 您能否澄清标签应与哪些数据点对齐(关于问题1a)对不起,没有提及这一点。我现在已经更新了OP。关于您问题的答案:我需要将x轴标签与名为
    x
    的数据框的第二列对齐。见1a。从OP获取更详细的描述。