我希望使用Matplotlib从Pandas Dataframes绘制一些数据 . 我需要控制情节的各种属性 . 我有2个属性有困难:

一个 . 自定义x轴标签的正确间距b . 如何使用相同的颜色绘制数据系列及其误差条

我在Python Pandas中有以下Dataframe:

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 vs x,其中点连接y线像这样的情节:http://40.media.tumblr.com/2bf0909609003f549e0d03406dc5a2dd/tumblr_mik00mS7rv1s6xcwuo1_1280.png我还需要放错误条( x_err 是x错误, y_err 是y_error)

在每个数据帧中,共有5列 . 列 Headers 必须位于图例中,x轴需要有标签 . x轴标签应为 'Temp_C''Pressure_Rear''Barometric_High''Facility_depletion_rate' .

这是我的代码,并在本文末尾显示了一个示例输出:

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轴标签完全未对齐 . 有没有办法打印标签,以便:

一个 . 它们与数据点对齐 . 我的意思是x轴标签应该与数据框 x .i.e的每一列中给出的x坐标对齐 . x.iloc[:,1], y.iloc[:,1] 是数据集的_和y坐标 Ax.iloc[:,2], y.iloc[:,2] 是数据集 B 的x和y坐标 . 我需要将 ONLY 的x轴标签与 x.iloc[:,1], y.iloc[:,1] 对齐 .

湾标签彼此间隔开,并且从左右边界开始

  • 错误栏的颜色与数据系列的颜色不同 . 例如,如果数据系列 'A' 是蓝色,是否有一种方法
    enter image description here
    强制 'A' 的错误栏也是蓝色?