Код, который у меня сейчас есть: dr aws набор прямоугольников на графике. Но при увеличении можно увидеть, что ширина прямоугольников не одинакова. Теперь я получаю следующий результат:
До сих пор я пытался изменить различные параметры объекта прямоугольника, такие как псевдоним, ширина линии, положение x, но ничего не помогает поддерживать постоянную ширину по всем стержням. Я предполагаю, что это как-то связано с вычислением DPI-числа и что я знаю, что нет. полос и ширины полосы заранее, может быть, я могу вручную установить ширину графика, чтобы разместить все полосы, чтобы они все имели одинаковый размер. Но я не уверен, как go об этом методе, и я был бы очень признателен за любую помощь в этом.
У меня нет конкретных ограничений c относительно ширины стержня. Я знаю нет. из столбцов я собираюсь построить и могу настроить точки данных, чтобы соответствовать размеру фигуры или настроить размер фигуры в соответствии с нет. точек данных - но я не знаю, достигнет ли это желаемого эффекта или я что-то упустил полностью.
Код:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
from matplotlib.patches import Rectangle
def draw_bar(ax,n,data,o,c):
color = 'red' if data%2==0 else 'green'
rect_vol = Rectangle(
xy=(n, 0),
width=0.5,
height=data,
edgecolor='black',
facecolor=color,
linewidth=0,
antialiased=True,
alpha=0.4
)
ax.add_patch(rect_vol)
N = 75
max_height = 50
data_collection = np.random.randint(5,max_height,N)
fig = plt.figure(dpi=72)
plt.margins(0)
ax = plt.subplot2grid((4,6), (0,0), rowspan=4, colspan=6)
ax.set_label('XYZ')
ax.xaxis.grid(True,linestyle='--')
ax.yaxis.grid(True,linestyle='--')
ax.set_xlim(0,N)
ax.set_ylim(0,max_height)
for n, (data) in enumerate(data_collection):
draw_bar(ax,n,data,np.random.choice(10),np.random.choice(10))
plt.show()