私はmatplotlibの新しいユーザーであり、チャートバーに問題があります:バーが重なっています。グラフをプロットすると、バーが重なって描画され、理由がわかりません。私の意見では、問題はグラフのサイズを変更することです。将来、タイトル、凡例、x、y 説明を挿入するため、サイズを変更します。私はいくつかの解決策を試しますが、解決策は1つです!! これは私のコードです:
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from matplotlib.colors import LightSource
from matplotlib.artist import Artist
import numpy as np
from decimal import *
import datetime
#Size
width = 360
height = 240
dpi = 80.0
colors = ['#be1e2d',
'#666699',
'#92d5ea',
'#ee8310',
'#8d10ee',
'#5a3b16',
'#26a4ed',
'#f45a90',
'#e9e744']
#Data
columns = ['2005','2006']
data = [[2.6,3.5],[2, 1.5]]
linewidth = 1
N = len(columns)
ind = np.arange(N)
#Re-Size
rdata = len(data) if columns is None else len(columns)
heightColumn = height*1.0 / (rdata) / (len(columns))
heightColumn = heightColumn/dpi
fig = plt.figure(1, figsize=(width/dpi,height/dpi),facecolor='w')
ax = fig.add_axes([0.2, 0.3, 0.6, 0.5])
#Draw
tupleRects = ()
idxColor = 0
valPositionCol = ind
for dat in data:
rects = plt.barh(valPositionCol, dat, heightColumn, color=colors[idxColor], alpha=0.8,
linewidth=linewidth)
valPositionCol=valPositionCol+heightColumn
idxColor += 1
if idxColor==9:
idxColor = 0
tupleRects += (rects,)
plt.show()
ありがとう
コードは同じですが、データを変更します ( columns[]
e data[]
):
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from matplotlib.colors import LightSource
import numpy as np
from decimal import *
import datetime
#Size
width = 360
height = 240
dpi = 80.0
colors = ['#be1e2d',
'#666699',
'#92d5ea',
'#ee8310',
'#8d10ee',
'#5a3b16',
'#26a4ed',
'#f45a90',
'#e9e744']
#Data
columns = ['2005','2006']
data = [[1.5, 1.5], [1.5,1.5], [1.5,1.5]]
linewidth = 1
N = len(columns)
ind = np.arange(N)
#Re-Size
height_of_group = .9
heightColumn = height_of_group / (len(columns))
fig = plt.figure(1, figsize=(width/dpi,height/dpi),facecolor='w')
ax = fig.add_axes([0.2, 0.3, 0.6, 0.5])
#Draw
tupleRects = ()
idxColor = 0
valPositionCol = ind
for dat in data:
rects = plt.barh(valPositionCol, dat, heightColumn, color=colors[idxColor], alpha=0.8,
linewidth=linewidth)
valPositionCol=valPositionCol+heightColumn
idxColor += 1
if idxColor==9:
idxColor = 0
tupleRects += (rects,)
plt.show()
問題は、変数データがあり、安定したアルゴリズムを見つけなければならないことです。