2017-08-18 20 views
2

サブプロットの両方の列に別のタイトルを追加できるように、元のコードに簡単に追加する方法はありますか?例えば、下の図に示すピンク色の領域のどこかのように。下位のサブプロットの列にタイトルを追加する

誰かが解決のために、このpostを見て私を指すが、私はループ

enter image description here

私のコードを使用しない方法があるかどうかを確認するために探しています:

import cv2 
import numpy as np 
import matplotlib.pyplot as plt 


path = 'R:\\Temp\\xx\\' 
path1 = 'R:\\Temp\\xx\\' 

def Hue(im_file): 
    im = cv2.imread(im_file) 
    im = cv2.cvtColor(im, cv2.COLOR_BGR2HSV_FULL) # Get Hue value= range[0,360] 
    im1 = im[776, 402] 
    Hue = im1[0] 
    return Hue 

def Saturation(im_file): 
    im = cv2.imread(im_file) 
    im = cv2.cvtColor(im, cv2.COLOR_BGR2HSV_FULL) #return Saturation value = range[0,255] 
    im1 = im[776, 402] 
    Saturation = im1[1] 
    return Saturation 

def Value(im_file): 
    im = cv2.imread(im_file) 
    im = cv2.cvtColor(im, cv2.COLOR_BGR2HSV_FULL) #return Value(Brightness) value = range[0,255] 
    im1 = im[776, 402] 
    Value = im1[2] 
    return Value 

def BlueComponent(im_file): 
    im = cv2.imread(im_file) #return blue value 
    im1 = im[776, 402] 
    b = im1[0] 
    return b 

def GreenComponent(im_file): 
    im = cv2.imread(im_file) #return green value 
    im1 = im[776, 402] 
    g = im1[1] 
    return g 

def RedComponent(im_file): #return red value 
    im = cv2.imread(im_file) 
    im1 = im[776, 402] 
    r = im1[2] 
    return r 

myHueList = [] 
mySaturationList = [] 
myValueList = [] 
myBlueList = [] 
myGreenList = [] 
myRedList = [] 
myList = [] 
num_images = 99 # number of images 

dotPos = 0 
for i in range(1770, 1869): # loop to auto-generate image names and run prior function 
    image_name = path + 'Cropped_Aligned_IMG_' + str(i) + '.png' # for loop runs from image number 1770 to 1868 
    myHueList.append(Hue(image_name)) 
    mySaturationList.append(Saturation(image_name)) 
    myValueList.append(Value(image_name)) 
    myBlueList.append(BlueComponent(image_name)) 
    myGreenList.append(GreenComponent(image_name)) 
    myRedList.append(RedComponent(image_name)) 
    myList.append(dotPos) 
    dotPos = dotPos + 0.5 


print(myBlueList) 
print(myGreenList) 
print(myRedList) 
print(myHueList) 
print(mySaturationList) 
print(myValueList) 
print(myList) 



for k in range(1770,1869): 
    a = 'Cropped_Aligned_IMG_' + str(k) 
    image_name = path + a + '.png' 
    img_file = cv2.imread(image_name) 

x = myList 
y = myBlueList 
y1 = myGreenList 
y2 = myRedList 
y3 = myHueList 
y4 = mySaturationList 
y5 = myValueList 


plt.axes([0.1, 0.1, 1, 1]) 
plt.suptitle('BGR & HSV Color Decimal Code Against Function of Time(Hours)', fontsize=14, fontweight='bold') 
plt.subplot(3,2,1) 
plt.plot(x, y, 'b.-') 
plt.title('Blue Component Color Decimal Code') 
plt.xlabel('Time(Hours)') 
plt.ylabel('Colour Code') 

plt.subplot(3,2,3) 
plt.plot(x, y1, 'g.-') 
plt.title('Green Component Color Decimal Code') 
plt.xlabel('Time(Hours)') 
plt.ylabel('Colour Code') 

plt.subplot(3,2,5) 
plt.plot(x, y2, 'r.-') 
plt.title('Red Component Color Decimal Code') 
plt.xlabel('Time(Hours)') 
plt.ylabel('Colour Code') 

plt.subplot(3,2,2) 
plt.plot(x, y3, 'b.-') 
plt.title('Hue Component HSV Color Decimal Code') 
plt.xlabel('Time(Hours)') 
plt.ylabel('Colour Code') 

plt.subplot(3,2,4) 
plt.plot(x, y4, 'g.-') 
plt.title('Saturation Component HSV Color Decimal Code') 
plt.xlabel('Time(Hours)') 
plt.ylabel('Colour Code') 

plt.subplot(3,2,6) 
plt.plot(x, y5, 'r.-') 
plt.title('Value Component HSV Color Decimal Code') 
plt.xlabel('Time(Hours)') 
plt.ylabel('Colour Code') 
plt.subplots_adjust(hspace = 0.5) 
plt.show() 
+0

ループを使用する際の問題点は何ですか?アイデアを一般化することしかできません。ループをしたくない場合は、ループを使用しないで、必要なだけ頻繁に内部を実行してください。 [この質問](https://stackoverflow.com/questions/36602347/multiple-titles-suptitle-with-subplots?rq=1)ここでより関連性があります。 – ImportanceOfBeingErnest

答えて

4

私は上部にサブプロットの空の行を作成することを想像することができます。それぞれのサブプロットは独自のタイトルを持ち、列タイトルとして機能します。私は物事を簡単にするためにここにループを使用してい

import matplotlib.pyplot as plt 
import numpy as np 
plt.rcParams["figure.figsize"] = 6,8 
colors = plt.rcParams["axes.prop_cycle"].by_key()["color"] 

x = np.linspace(-3,3) 
y = np.random.randn(len(x),6) 

fig, axes = plt.subplots(ncols=2, nrows=3+1, gridspec_kw={"height_ratios":[0.02,1,1,1]}) 
fig.suptitle('Some long super title for the complete figure', 
      fontsize=14, fontweight='bold') 
for i, ax in enumerate(axes.flatten()[2:]): 
    ax.plot(x,y[:,i], color=colors[i%6]) 
    ax.set_title("Title {}".format(i+1)) 

for i, ax in enumerate(axes.flatten()[:2]): 
    ax.axis("off") 
    ax.set_title("Columntitle {}".format(i+1), fontweight='bold') 

fig.subplots_adjust(hspace=0.5, bottom=0.1) 
plt.show() 

enter image description here

注意。もちろん、何らかの理由で必要な場合は、サブプロットごとにコマンドを個別に入力することもできます。

関連する問題