Python Matplotlib使用x轴标签正确对齐并匹配系列和错误的颜色进行打印
我希望使用Matplotlib从Pandas数据帧绘制一些数据。我需要控制地块的各种属性。我对两种属性有困难: a。自定义x轴标签的正确间距 B如何用相同的颜色绘制数据系列及其错误条 我在Python中有以下数据帧: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
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
每列中给出的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。标签彼此之间以及左右边框之间的间距相等您能否澄清标签应与哪些数据点对齐(关于问题1a)对不起,没有提及这一点。我现在已经更新了OP。关于您问题的答案:我需要将x轴标签与名为
x
的数据框的第二列对齐。见1a。从OP获取更详细的描述。