Ejemplo n.º 1
0
def test_monthlychart_monthly_per_hour_stack():
    """Test the initialization of MonthlyChart with monthly-per-hour stacked collections."""
    header = Header(Energy(), 'kWh', AnalysisPeriod())
    values = list(range(20, 12 * 24 + 20))
    date_t = AnalysisPeriod().months_per_hour
    data_coll = MonthlyPerHourCollection(header, values, date_t)
    month_chart = MonthlyChart([data_coll])

    assert month_chart.data_meshes is None
    plines = month_chart.data_polylines
    assert isinstance(plines[0], Polyline2D)
    assert len(plines) == 12
    assert month_chart.y_axis_labels1[0] == '0.00'

    header2 = Header(Energy(), 'kWh', AnalysisPeriod())
    values2 = [x / 10 for x in range(12 * 24)]
    data_coll2 = MonthlyPerHourCollection(header2, values2, date_t)
    month_chart = MonthlyChart([data_coll, data_coll2])

    plines = month_chart.data_polylines
    assert isinstance(plines[0], Polyline2D)
    assert len(plines) == 12 * 2

    month_chart = MonthlyChart([data_coll, data_coll2], stack=True)
    plines = month_chart.data_polylines
    assert isinstance(plines[0], Polyline2D)
    assert len(plines) == 12 * 2
Ejemplo n.º 2
0
def test_monthlychart_daily_stack():
    """Test the initialization of MonthlyChart with daily stacked data collections."""
    header = Header(Energy(), 'kWh', AnalysisPeriod())
    values = [i / 31 for i in range(365)]
    date_t = list(range(1, 366))
    data_coll = DailyCollection(header, values, date_t)
    month_chart = MonthlyChart([data_coll])

    meshes = month_chart.data_meshes
    assert len(meshes) == 1
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 365
    assert month_chart.data_polylines is None

    header2 = Header(Energy(), 'kWh', AnalysisPeriod())
    values2 = [i / 31 for i in range(365)]
    data_coll2 = DailyCollection(header2, values2, date_t)
    month_chart = MonthlyChart([data_coll, data_coll2])

    meshes = month_chart.data_meshes
    assert len(meshes) == 2
    assert isinstance(meshes[1], Mesh2D)
    assert len(meshes[1].faces) == 365

    month_chart = MonthlyChart([data_coll, data_coll2], stack=True)
    meshes = month_chart.data_meshes
    assert len(meshes) == 2
    assert isinstance(meshes[1], Mesh2D)
    assert len(meshes[1].faces) == 365
Ejemplo n.º 3
0
def test_monthlychart_monthly_stack():
    """Test the initialization of MonthlyChart with monthly stacked data collections."""
    header = Header(Energy(), 'kWh', AnalysisPeriod())
    values = [i for i in range(12, 24)]
    date_t = list(range(1, 13))
    data_coll = MonthlyCollection(header, values, date_t)
    month_chart = MonthlyChart([data_coll])

    meshes = month_chart.data_meshes
    assert len(meshes) == 1
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 12
    assert month_chart.y_axis_labels1[0] == '0.00'

    header2 = Header(Energy(), 'kWh', AnalysisPeriod())
    values2 = [i for i in range(24, 36)]
    data_coll2 = MonthlyCollection(header2, values2, date_t)
    month_chart = MonthlyChart([data_coll, data_coll2])

    meshes = month_chart.data_meshes
    assert len(meshes) == 2
    assert isinstance(meshes[1], Mesh2D)
    assert len(meshes[1].faces) == 12

    month_chart = MonthlyChart([data_coll, data_coll2], stack=True)
    meshes = month_chart.data_meshes
    assert len(meshes) == 2
    assert isinstance(meshes[1], Mesh2D)
    assert len(meshes[1].faces) == 12
Ejemplo n.º 4
0
def test_monthlychart_monthly():
    """Test the initialization of MonthlyChart with monthly data collections."""
    header = Header(Temperature(), 'C', AnalysisPeriod())
    values = [i for i in range(12)]
    date_t = list(range(1, 13))
    data_coll = MonthlyCollection(header, values, date_t)
    month_chart = MonthlyChart([data_coll])

    meshes = month_chart.data_meshes
    assert len(meshes) == 1
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 12
    assert month_chart.data_polylines is None

    header2 = Header(RelativeHumidity(), '%', AnalysisPeriod())
    values2 = [i for i in range(10, 70, 5)]
    data_coll2 = MonthlyCollection(header2, values2, date_t)
    month_chart = MonthlyChart([data_coll, data_coll2])

    meshes = month_chart.data_meshes
    assert len(meshes) == 2
    assert isinstance(meshes[1], Mesh2D)
    assert len(meshes[1].faces) == 12

    month_chart = MonthlyChart([data_coll, data_coll2], stack=True)
    meshes = month_chart.data_meshes
    assert len(meshes) == 2
    assert isinstance(meshes[1], Mesh2D)
    assert len(meshes[1].faces) == 12
Ejemplo n.º 5
0
def test_monthlychart_hourly_stack():
    """Test the initialization of MonthlyChart with hourly stacked data collections."""
    header = Header(Energy(), 'kWh', AnalysisPeriod())
    values = [i / 365 for i in range(20, 8780)]
    data_coll = HourlyContinuousCollection(header, values)
    month_chart = MonthlyChart([data_coll])

    meshes = month_chart.data_meshes
    assert len(meshes) == 1
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 24 * 12
    assert month_chart.y_axis_labels1[0] == '0.00'

    header2 = Header(Energy(), 'kWh', AnalysisPeriod())
    values2 = [i / 365 for i in range(8760, 0, -1)]
    data_coll2 = HourlyContinuousCollection(header2, values2)
    month_chart = MonthlyChart([data_coll, data_coll2])

    meshes = month_chart.data_meshes
    assert len(meshes) == 2
    assert isinstance(meshes[1], Mesh2D)
    assert len(meshes[1].faces) == 24 * 12

    month_chart = MonthlyChart([data_coll, data_coll2], stack=True)
    meshes = month_chart.data_meshes
    assert len(meshes) == 2
    assert isinstance(meshes[1], Mesh2D)
    assert len(meshes[1].faces) == 24 * 12
    plines = month_chart.data_polylines
    assert isinstance(plines[0], Polyline2D)
    assert len(plines) == 2 * 12 * 2
Ejemplo n.º 6
0
def test_monthlychart_two_axes():
    """Test the MonthlyChart with two Y-axes."""
    header = Header(Temperature(), 'C', AnalysisPeriod())
    values = [i for i in range(12)]
    date_t = list(range(1, 13))
    data_coll = MonthlyCollection(header, values, date_t)

    header2 = Header(RelativeHumidity(), '%', AnalysisPeriod())
    values2 = [i for i in range(10, 70, 5)]
    data_coll2 = MonthlyCollection(header2, values2, date_t)
    month_chart = MonthlyChart([data_coll, data_coll2])

    y_txt = month_chart.y_axis_labels2
    assert all(isinstance(txt, str) for txt in y_txt)
    y_lines = month_chart.y_axis_lines
    y_pts = month_chart.y_axis_label_points2
    assert len(y_lines) == len(y_txt) == len(y_pts) == 11
    assert all(isinstance(line, LineSegment2D) for line in y_lines)
    assert all(isinstance(pt, Point2D) for pt in y_pts)
    assert isinstance(month_chart.y_axis_title_text2, str)
    assert 'Fraction' in month_chart.y_axis_title_text2
    assert isinstance(month_chart.y_axis_title_location2, Plane)

    # ensure the first axis was not affected
    y_txt = month_chart.y_axis_labels1
    assert all(isinstance(txt, str) for txt in y_txt)
    y_pts = month_chart.y_axis_label_points1
    assert len(y_lines) == len(y_txt) == len(y_pts) == 11
    assert all(isinstance(pt, Point2D) for pt in y_pts)
    assert isinstance(month_chart.y_axis_title_text1, str)
    assert 'Temperature' in month_chart.y_axis_title_text1
    assert isinstance(month_chart.y_axis_title_location1, Plane)
Ejemplo n.º 7
0
def test_monthlychart_init():
    """Test the initialization of MonthlyChart and basic properties."""
    header = Header(Temperature(), 'C', AnalysisPeriod())
    values = [i / 365 for i in range(8760)]
    data_coll = HourlyContinuousCollection(header, values)
    month_chart = MonthlyChart([data_coll])

    str(month_chart)  # test the string representation
    assert isinstance(month_chart.data_collections, tuple)
    assert isinstance(month_chart.data_collections[0], HourlyContinuousCollectionImmutable)
    assert isinstance(month_chart.legend_parameters, LegendParameters)
    assert month_chart.base_point == Point2D(0, 0)
    assert month_chart.x_dim == 10
    assert month_chart.y_dim == 40
    assert not month_chart.stack
    assert month_chart.percentile == 34

    meshes = month_chart.data_meshes
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 24 * 12
    plines = month_chart.data_polylines
    assert isinstance(plines[0], Polyline2D)
    assert len(plines) == 3 * 12

    border = month_chart.chart_border
    assert isinstance(border, Polyline2D)
    assert len(border.segments) == 4

    y_txt = month_chart.y_axis_labels1
    assert all(isinstance(txt, str) for txt in y_txt)
    y_lines = month_chart.y_axis_lines
    y_pts = month_chart.y_axis_label_points1
    assert len(y_lines) == len(y_txt) == len(y_pts) == 11
    assert all(isinstance(line, LineSegment2D) for line in y_lines)
    assert all(isinstance(pt, Point2D) for pt in y_pts)
    assert isinstance(month_chart.y_axis_title_text1, str)
    assert 'Temperature' in month_chart.y_axis_title_text1
    assert isinstance(month_chart.y_axis_title_location1, Plane)

    assert month_chart.y_axis_labels2 is None
    assert month_chart.y_axis_label_points2 is None
    assert month_chart.y_axis_title_text2 is None
    assert month_chart.y_axis_title_location2 is None

    month_txt = month_chart.month_labels
    assert all(isinstance(txt, str) for txt in month_txt)
    month_lines = month_chart.month_lines
    month_pts = month_chart.month_label_points
    assert len(month_txt) == len(month_pts) == 12
    assert len(month_lines) == 11
    assert all(isinstance(line, LineSegment2D) for line in month_lines)
    assert all(isinstance(pt, Point2D) for pt in month_pts)

    assert isinstance(month_chart.legend, Legend)

    assert isinstance(month_chart.title_text, str)
    assert isinstance(month_chart.lower_title_location, Plane)
    assert isinstance(month_chart.upper_title_location, Plane)
Ejemplo n.º 8
0
def test_monthlychart_monthly_per_hour():
    """Test the initialization of MonthlyChart with monthly-per-hour data collections."""
    header = Header(Temperature(), 'C', AnalysisPeriod())
    values = list(range(12 * 24))
    date_t = AnalysisPeriod().months_per_hour
    data_coll = MonthlyPerHourCollection(header, values, date_t)
    month_chart = MonthlyChart([data_coll])

    assert month_chart.data_meshes is None
    plines = month_chart.data_polylines
    assert isinstance(plines[0], Polyline2D)
    assert len(plines) == 12

    header2 = Header(RelativeHumidity(), '%', AnalysisPeriod())
    values2 = [x / 10 for x in range(12 * 24)]
    data_coll2 = MonthlyPerHourCollection(header2, values2, date_t)
    month_chart = MonthlyChart([data_coll, data_coll2])

    plines = month_chart.data_polylines
    assert isinstance(plines[0], Polyline2D)
    assert len(plines) == 12 * 2
Ejemplo n.º 9
0
def test_hourlyplot_sub_hourly():
    """Test the initialization of MonthlyChart with a sub-hourly collection."""
    header = Header(Temperature(), 'C', AnalysisPeriod())
    values = list(range(8760))
    dc1 = HourlyContinuousCollection(header, values)
    data_coll = dc1.interpolate_to_timestep(4)
    month_chart = MonthlyChart([data_coll])

    meshes = month_chart.data_meshes
    assert len(meshes) == 1
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 24 * 12 * 4
    assert meshes[0].min == Point2D(0, 0)
Ejemplo n.º 10
0
def test_hourlyplot_reversed_analysis_period():
    """Test the initialization of MonthlyChart with a reversed analysis period."""
    header = Header(Temperature(), 'C', AnalysisPeriod())
    values = list(range(8760))
    data_coll = HourlyContinuousCollection(header, values)
    period = AnalysisPeriod(12, 1, 0, 1, 31, 23)
    data_coll = data_coll.filter_by_analysis_period(period)
    month_chart = MonthlyChart([data_coll])

    assert month_chart.analysis_period == period
    meshes = month_chart.data_meshes
    assert len(meshes) == 1
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 2 * 24
Ejemplo n.º 11
0
def test_hourlyplot_analysis_period():
    """Test the initialization of MonthlyChart with an analysis period."""
    header = Header(Temperature(), 'C', AnalysisPeriod())
    values = list(range(8760))
    data_coll = HourlyContinuousCollection(header, values)
    period1 = AnalysisPeriod(3, 1, 0, 3, 31, 23)
    data_coll1 = data_coll.filter_by_analysis_period(period1)
    month_chart = MonthlyChart([data_coll1])

    assert month_chart.analysis_period == period1
    meshes = month_chart.data_meshes
    assert len(meshes) == 1
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 24

    period2 = AnalysisPeriod(3, 1, 0, 6, 30, 23)
    data_coll2 = data_coll.filter_by_analysis_period(period2)
    month_chart = MonthlyChart([data_coll2])

    assert month_chart.analysis_period == period2
    meshes = month_chart.data_meshes
    assert len(meshes) == 1
    assert isinstance(meshes[0], Mesh2D)
    assert len(meshes[0].faces) == 24 * 4
Ejemplo n.º 12
0
def test_monthlychart_set_min_max_by_index():
    """Test the set_minimum_by_index amd set_maximum_by_index methods."""
    header = Header(Temperature(), 'C', AnalysisPeriod())
    values = [i for i in range(12)]
    date_t = list(range(1, 13))
    data_coll = MonthlyCollection(header, values, date_t)
    header2 = Header(RelativeHumidity(), '%', AnalysisPeriod())
    values2 = [i for i in range(10, 70, 5)]
    data_coll2 = MonthlyCollection(header2, values2, date_t)
    l_par = LegendParameters(min=-20, max=40)
    l_par.decimal_count = 0

    month_chart = MonthlyChart([data_coll, data_coll2], legend_parameters=l_par)

    assert month_chart.y_axis_labels1[0] == '-20'
    assert month_chart.y_axis_labels1[-1] == '40'

    month_chart.set_minimum_by_index(0, 1)
    assert month_chart.y_axis_labels2[0] == '0'
    month_chart.set_maximum_by_index(100, 1)
    assert month_chart.y_axis_labels2[-1] == '100'
Ejemplo n.º 13
0
except ImportError as e:
    raise ImportError('\nFailed to import ladybug_rhino:\n\t{}'.format(e))

if all_required_inputs(ghenv.Component):
    # set default values for the chart dimensions
    z_val = _base_pt_.Z if _base_pt_ is not None else 0
    z_val_tol = z_val + tolerance
    _base_pt_ = to_point2d(_base_pt_) if _base_pt_ is not None else Point2D()
    _x_dim_ = _x_dim_ if _x_dim_ is not None else 10.0 / conversion_to_meters()
    _y_dim_ = _y_dim_ if _y_dim_ is not None else 40.0 / conversion_to_meters()
    stack_ = stack_ if stack_ is not None else False
    percentile_ = percentile_ if percentile_ is not None else 34.0
    lpar = legend_par_[0] if len(legend_par_) != 0 else None

    # create the monthly chart object and get the main pieces of geometry
    month_chart = MonthlyChart(_data, lpar, _base_pt_, _x_dim_, _y_dim_,
                               stack_, percentile_)
    if len(legend_par_) > 1:
        if legend_par_[1].min is not None:
            month_chart.set_minimum_by_index(legend_par_[1].min, 1)
        if legend_par_[1].max is not None:
            month_chart.set_maximum_by_index(legend_par_[1].max, 1)

    #  get the main pieces of geometry
    d_meshes = month_chart.data_meshes
    if d_meshes is not None:
        data_mesh = [from_mesh2d(msh, z_val_tol) for msh in d_meshes]
    d_lines = month_chart.data_polylines
    if d_lines is not None:
        data_lines = [from_polyline2d(lin, z_val_tol) for lin in d_lines]
    borders = [from_polyline2d(month_chart.chart_border, z_val)] + \
            [from_linesegment2d(line, z_val) for line in month_chart.y_axis_lines] + \