A mount bracket system ( 20) includes a wall-mount part ( 2) including an axis portion ( 4) with a cylindrical column shape and a stopper ( 5) provided at the axis portion and having a width larger than a diameter of the axis portion ( 4); and a wall-mount frame ( 3) including a path ( 7) continuing from an opening ( 7 a) and having a width larger than the diameter of the axis portion ( 4) and smaller than the width of the stopper ( 5). The path includes a projection ( 7 b) projecting inward from an edge of the path ( 7), and the projection ( 7 b) is located nearer the opening ( 7 a) than the axis portion ( 4) of the wall-mount part ( 2) is when the axis portion ( 4) is retained at a retaining point of the wall-mount frame ( 3).
This application is the U.S. National Phase under 35 U.S.C. §371 of International Application No. PCT/JP2012/000274, filed on Jan. 18, 2012, which in turn claims the benefit of Japanese Application No. 2011-023603, filed on Feb. 7, 2011, the disclosures of which Applications are incorporated by reference herein.
The present disclosure relates to mount bracket systems, and more specifically, to a mount bracket system configured to anchor a target object such as a display device to a wall-mount frame on a wall through a wall-mount part.
Recently, progress has been made in slimming down of display devices such as television sets. The slimming down of display devices has enabled the display devices to be hung on walls by means of mount bracket systems. The mount bracket system is a system which includes a wall-mount part and a wall-mount frame and is configured to hang, e.g., a display device on a wall by securing the wall-mount part on the backside of the display device and by anchoring the wall-mount part to the wall-mount frame mounted on the wall. Many houses and commercial facilities actually have display devices mounted on walls in this manner.
Patent Document 1 describes a conventional mount bracket system. The conventional mount bracket system for a display device will be described below with reference to figref[FIGS. 10 and 11] .
figref[FIG. 10] illustrates how a wall-mount part included in the conventional mount bracket system for a display device is secured to a target object. The wall-mount part 100 includes an axis portion 100 a and a stopper 100 b provided at an end of the axis portion 100 a. As shown in figref[FIG. 10] , the wall-mount part 100 is secured to and projects from the target object 200.
figref[FIG. 11] illustrates how the wall-mount part is anchored to a wall-mount frame in the conventional mount bracket system for a display device. The wall-mount frame 300 includes a path 400 which is a groove bends at an intermediate point. The wall-mount part 100 is anchored to the wall-mount frame 300 by inserting the axis portion 100 a of the wall-mount part into the path 400.
It is described that, in the conventional mount bracket system for a display device, the intermediate point at which the path 400 bends makes it less likely that the wall-mount part 100 is moved even by an upward impact.
PATENT DOCUMENT 1: Japanese Patent Publication No. H11-201386
However, in view of the fact that the wall-mount part 100 has a circular cross section as illustrated in figref[FIG. 11] , when an upward force is applied to the target object, a collision between the axis portion 100 a of the wall-mount part 100 and an upper edge portion 500 of the path 400 causes a resultant force acting on the axis portion 100 a and having a horizontal component.
Thus, the conventional mount bracket system is disadvantageous in that the target object may be easily moved in a diagonally upward direction by an upward impact.
It is therefore an object of the present disclosure to provide a mount bracket system which is capable of anchoring a target object such that the target object is less likely to be moved by an upward impact.
To achieve the object, a mount bracket system of the present disclosure is configured such that a path through which an axis portion of a wall-mount part included in the mount bracket system passes has a projection, and the projection is located nearer an opening of the path than a retaining point for the axis portion is, and projects inward from an edge of the path.
Specifically, the mount bracket system of the present disclosure includes: a wall-mount part including an axis portion with a cylindrical column shape, and a stopper provided at the axis portion and having a width larger than a diameter of the axis portion; and a wall-mount frame including a path continuing from an opening and having a width larger than the diameter of the axis portion and smaller than the width of the stopper, wherein the path includes a projection projecting inward from an edge of the path, and the projection is located nearer the opening than the axis portion of the wall-mount part is when the axis portion is retained at a retaining point of the wall-mount frame.
In the mount bracket system of the present disclosure, even if an upward force is applied to a target object, the projection provided on the edge of the path and located on a side adjacent to the opening controls movements of the wall-mount part. Consequently, it is possible to prevent the target object from becoming detached from the wall-mount frame.
figref[FIG. 1(] a) and figref[FIG. 1(] b) illustrate a mount bracket system according to an embodiment of the present disclosure and a target object anchored by means of the mount bracket system. figref[FIG. 1(] a) is a back view, and figref[FIG. 1(] b) is a cross-sectional view taken along the line Ib-Ib in figref[FIG. 1(] a).
figref[FIG. 2(] a) and figref[FIG. 2(] b) illustrate a wall-amount part included in the mount bracket system according to the embodiment of the present disclosure. figref[FIG. 2(] a) is a side view, and figref[FIG. 2(] b) is a cross-sectional view taken along the line IIb-IIb in figref[FIG. 2(] a).
figref[FIG. 3] is a schematic view of part of the mount bracket system according to the embodiment of the present disclosure. figref[FIG. 3] illustrates, with the line of operational flow, how the target object is anchored to the wall-amount frame through the wall-amount part.
figref[FIG. 4] is a cross-sectional view illustrating part of a lateral side of the target object anchored by means of the mount bracket system of the embodiment of the present disclosure.
figref[FIG. 5] is an enlarged front view illustrating the shape of a path formed in the wall-mount frame included in the mount bracket system of the embodiment of the present disclosure.
figref[FIG. 6(] a) and figref[FIG. 6(] b) are enlarged front views of the wall-amount frame included in the mount bracket system of the embodiment of the present disclosure. figref[FIGS. 6(] a) and 6( b) illustrate how the axis portion of the wall-amount part moves in the path of the frame.
figref[FIG. 7] is an enlarged front view illustrating the shape of a path formed in a wall-mount frame included in a mount bracket system according to a first variation of the embodiment of the present disclosure.
figref[FIG. 8] is an enlarged front view illustrating how an axis portion of a wall-mount part moves in the path formed in the wall-mount frame included in the mount bracket system according to the first variation of the embodiment of the present disclosure.
figref[FIG. 9] is an enlarged view illustrating the shape of a path formed in a wall-mount frame included in a mount bracket system according to a second variation of the embodiment of the present disclosure.
figref[FIG. 10] is a perspective view of part of a conventional mount bracket system. figref[FIG. 10] illustrates a wall-mount part projecting from a target object in the conventional mount bracket system.
figref[FIG. 11] is an enlarged front view illustrating the wall-amount part anchored to a wall-amount frame included in the conventional mount bracket system.
A mount bracket system according to an embodiment of the present disclosure will be described below with reference to figref[FIGS. 1-6] .
<Configuration of Mount Bracket System>
A configuration of the mount bracket system is now described.
First, the overall configuration of the mount bracket system is described with reference to figref[FIG. 1(] a).
As illustrated in figref[FIG. 1(] a), the mount bracket system 20 includes a plurality of wall-mount parts 2 secured to the backside of a target object 1 and a wall-mount frame 3 to which the wall-mount parts 2 are anchored.
Each of the constituent components of the mount bracket system 20 is outlined below. The wall-mount parts 2 include four wall-mount parts 2 secured to and projecting from the backside of the target object 1. The wall-mount frame 3 is secured on a wall (not shown). The wall-mount parts 2 will be detailed later.
The target object 1 may be any object which is hung on a wall for use or for viewing. A display device such as a plasma display panel is exemplified as the target object 1 in this embodiment.
Referring to figref[FIG. 1(] b), how the target object 1 is anchored to the wall-mount frame 3 is described next. As illustrated in figref[FIG. 1(] b), each of the wall-mount parts 2 disposed in an associated one of grooves formed in the wall-mount frame 3 in a state where the target object 1 is anchored by means of the mount bracket system 20. In this manner, the target object 1 is anchored to the wall-mount frame 3 through the plurality of wall-mount parts 2.
The wall-mount parts 2 are described in detail with reference to figref[FIGS. 2(] a) and 2( b). As illustrated in figref[FIGS. 2(] a) and 2( b), each of the wall-mount parts 2 includes an axis portion 4, a stopper 5, and a screw portion 6. The axis portion 4 is a resin molding and has a cylindrical column shape. The stopper 5 is a resin molding and has a substantially cylindrical column shape. In this embodiment, the axis portion 4 and the stopper 5 are molded in one piece using a resin material.
As clearly illustrated in figref[FIGS. 2(] a) and 2( b), the stopper 5 has a width larger than the diameter of the axis portion 4. When the stopper 5 has a substantially cylindrical column shape as in this embodiment, the width of stopper 5 refers to the diameter of the column shape. The stopper 5 may have a shape other than the cylindrical column shape, and it is sufficient, in such a case, that the stopper 5 has a width larger than the diameter of the axis portion 4. This configuration is necessary to prevent the wall-mount portion 2 having the axis portion 4 inserted into the groove (which will be detailed later) formed in the wall-mount frame 3 from becoming detached from the wall-mount frame 3. The screw portion 6 is made of, e.g., a metal rod, and is bonded such that the longitudinal axis of the screw portion 6 is coincident with the axial direction of the axis portion 4 and the stopper 5. The screw portion 6 has a thread groove formed thereon. The screw portion 6 is used to secure the axis portion 4 and stopper 5 to the target object 1. The backside of the target object 1 has threaded holes each corresponding to the screw portion 6. Each of the wall-mount parts 2 is secured to the target object 1 by screwing the screw portion 6 into an associated one of the threaded holes of the target object 1.
The method for anchoring the target object 1 to the wall-mount frame 3 through the wall-mount parts 2 is described next.
figref[FIG. 3] illustrates, with a line of operational flow, how the target object 1 is anchored to the wall-mount frame 3 through the wall-mount parts 2 by using the mount bracket system of this embodiment. Specifically, the right half of figref[FIG. 3] illustrates a cross section of a lateral side of the target object 1 to which the wall-mount part 2 is secured, and the left half of figref[FIG. 3] illustrates the wall-mount frame 3, as viewed from front, having a path 7 which is one of the grooves formed in the wall-mount frame 3.
The path 7 is formed by cutting out a part of the wall-mount frame 3 by means of, e.g., pressing. The path 7 has a width which is larger than the diameter of the axis portion 4 and smaller than the width of the stopper 5. The wall-mount frame 3 has a convex shape having therein a hollow space having a depth, and accordingly, the path 7 adjoins to the hollow space having the depth. This configuration enables the axis portion 4 to be inserted in the path 7. As indicated by the arrow (the line of operational flow) in figref[FIG. 3] , the axis portion 4 of the wall-mount part 2 is caused to pass through the path 7 of the wall-mount frame 3. The path 7 has a lower end which retains the axis portion 4.
Although the path 7 of this embodiment has the lower end which is closed, the path 7 may have a narrowing width leading to a lower end having a width smaller than the diameter of the axis portion 4 such that the lower end retains the axis portion 4. In sum, the path 7 is required to have a portion where the axis portion 4 is retained without moving further in the vertical direction (i.e. in the downward direction). Any portion of the path 7 which satisfies this requirement and retains the axis portion 4 is referred to as the lower end of the path 7. In this manner, the target object 1 is anchored to the wall-mount frame 3 through the wall-mount parts 2.
figref[FIG. 4] illustrates a cross section of a lateral side of the target object 1 anchored by means of the mount bracket system 20 according to this embodiment. Each of the wall-mount parts 2 is secured to the target object 1 through the screw portion 6. The axis portion 4 of each of the wall-mount parts 2 is supported in the path 7 at the lower end which serves as a retaining point, resulting in that the wall-mount parts 2 are anchored to the wall-mount frame 3. Thus, the target object 1 is anchored to the wall-mount frame 3 through the wall-mount parts 2.
It is presumed that an operator anchors the target object 1 to a wall in the following manner. First, the operator secures the wall-mount frame 3 to a desired portion of the wall. Next, the operator screws the wall-mount parts 2 into the target object 1. The operator, then, lifts up the target object 1 and fits the axis portions 4 of the wall-mount parts 2 into the paths 7 of the wall-mount frame 3 in a simultaneous manner.
Upon inserting the axis portions 4 into the paths 7, the weight of the target object 1 causes the axis portions 4 to move to the lower ends of the paths 7. This is because each of the paths 7 includes a vertical path and a path extending in a diagonally downward direction continuously from the vertical path. Here, the path extending in a diagonally downward direction refers to at least part of the path 7 obliquely intersects the vertical direction when the system is in use.
<Shape, Functions, and Advantages of Path>
The shape of each of the paths 7 formed in the wall-mount frame 3 used in the mount bracket system of this embodiment will be described below in detail, together with the functions and advantages of the paths.
First, the shape of the paths 7 formed in the wall-mount frame 3 is described in detail.
figref[FIG. 5] is an enlarged view of one of the paths 7 which are the grooves formed in the wall-mount frame 3 used in the mount bracket system of this embodiment. As shown in figref[FIG. 5] , the path 7 has an opening 7 a which opens upwardly in the vertical direction of the wall-mount frame 3. From the opening 7 a, the path 7 decreases in width downwardly in a gradual manner to have its width substantially equal to a width W 1. The width W 1 is larger than the diameter of the axis portion 4. The path 7 extends in the vertical direction, and then bends in a diagonally downward direction from a bend portion. Part of the edge of the path 7 which is located close to the bend portion is cut out such that the width of the path 7 increases from the width W 1 to a width W 2, inwardly with respect to the bend portion. Consequently, the path 7 has a projection 7 b formed at the point from which the path 7 increases in width from the width W 1 to the width W 2 that is larger than width W 1. Thus, the projection 7 b projects from the upper edge of the path 7 toward the inside of the path 7. The projection 7 b is provided to control upward movements of the axis portion 4.
As descried above, upon insertion of the wall-mount part 2 into the opening 7 a of the path 7 of the wall-mount frame 3, the axis portion 4 of the wall-mount part 2 is moved by gravity and reaches the lower end of the path 7, where the axis portion 4 is retained. When the axis portion 4 is retained, the projection 7 b formed in the path 7 is located at an upper point of the path 7 relative to the vertical line passing through the center point of the axis portion 4. Here, the upper point of the path 7 refers to a point which is nearer the opening 7 a than the axis portion 4 which is retained at the lower end of the path 7 is.
Here, it is appropriate to form the projection 7 b such that the projection 7 b comes into collision with a surface portion of the axis portion 4 corresponding to the fourth quadrant of the four quadrants divided by the vertical and horizontal lines passing through the center point of the axis portion 4, in other words, with a surface portion of the axis portion 4 opposite to the opening 7 a.
The projection 7 b, which is formed by cutting out part of the wall-mount frame 3, and the wall-mount frame 3 are made of the same material. This configuration in which the projection 7 b and the wall-mount frame 3 are made of the same material is advantageous in both of the strength of the projection 7 b and machining costs.
The advantages obtained from the shape of the paths 7 formed in the wall-mount frame 3 will be described next.
When a force acting in a vertically upward direction (in the direction indicated by the arrow in figref[FIG. 5] ) is applied to the axis portion 4 which is in the state shown in figref[FIG. 5] , the axis portion 4 of the wall-mount part 2 moves along the edge of the path 7 located upward in a vertically direction (hereinafter may be referred to simply as “located upward”). This is because a collision between an upper edge of the path 7 and the axis portion 4 generates a resultant force acting toward the opening 7 a of the path 7 (hereinafter may be referred to simply as “toward upper left”).
Referring figref[FIGS. 6(] a) and 6( b), how the axis portion 4 moves is described. Here, the axis portion 4 moves from the position illustrated in figref[FIG. 6(] a) to the position illustrated in figref[FIG. 6(] b). In each of figref[FIGS. 6(] a) and 6( b), the arrow extending from the center point of the axis portion 4 indicates the direction of an applied force.
As illustrated in figref[FIG. 6(] a), first, the axis portion 4 moves upward, that is, the axis portion 4 performs a movement which causes the wall-mount part 2 to become detached from the wall-mount frame 3.
In this embodiment, however, an upper left portion of the axis portion 4 comes into collision with the projection 7 b as illustrated in figref[FIG. 6(] b) when the axis portion 4 continues to move. The reason for the collision between the upper left portion of the axis portion 4 and the projection 7 b is that the projection 7 b is located at the upper point of the path 7 relative to the vertical line passing through the center point of the axis portion 4 (i.e., located nearer the opening 7 a than the vertical line is). Accordingly, the collision generates a repulsive force acting toward lower right (a force acting opposite to the opening 7 a). The axis portion 4 of the wall-mount part 2 is consequently moved to the point where the axis portion 4 is retained in the wall-mount frame 3 again. As a result, even if a force acting in the vertically upward direction is applied to the axis portion 4, the wall-mount part 2 does not become detached from the wall-mount frame 3. That is, even if a force acting in the vertically upward direction is applied to the target object 1, the target object 1 does not become detached from the wall-mount frame 3.
<First Variation>
A first variation of this embodiment will be described below with reference to figref[FIGS. 7 and 8] .
figref[FIG. 7] is an enlarged view of one of paths 9 formed in a wall-mount frame 3 used in a mount bracket system according to the first variation. As illustrated in figref[FIG. 7] , the path 9 has an opening 9 a which opens upwardly in the vertical direction of the wall-mount frame 3. From the opening 9 a, the path 9 decreases in width downwardly in a gradual manner to have its width substantially equal to a width W 1. The width W 1 is larger than the diameter of the axis portion 4. The path 9 extends in the vertical direction, and then bends in a diagonally downward direction.
In the path 9 of the this variation, the lower end which is the retaining point for the axis portion 4 has an upper edge which is cut out such that the width of the path 9 increases from the width W 1 to a width W 2. Consequently, a projection 9 b is formed at the point where the width of the path 9 increases from the width W 1 to the width W 2 that is larger than the width W 1. Thus, the projection 9 b projects from the upper edge of the path 9 toward the inside of the path 9. The projection 9 b is provided for controlling upward movements of the axis portion 4.
As described above, upon insertion of the wall-mount part 2 into the opening 9 a of the path 9 of the wall-mount frame 3, the axis portion 4 of the wall-mount part 2 is moved by gravity and reaches the lower end of the path 9, where the axis portion 4 is retained. When the axis portion 4 is retained, the projection 9 b formed in the path 9 is located at an upper point of the path 9 relative to the vertical line passing through the center point of the axis portion 4.
The projection 9 b, which is formed by cutting out the wall-mount frame 3, and the wall-mount frame 3 are made of the same material.
A difference between the path 9 and the path 7 is described next.
The path 7 and path 9 each of which is formed in the corresponding wall-mount frame 3 share a commonality: The projections 7 b and 9 b are each located at the corresponding upper point of the path 7 or 9 relative to the vertical line passing through the center point of the axis portion 4. On the other hand, the path 9 of this variation is different from the path 7 in that the projection 9 b is located above (directly above) the axis portion 4. That is, the projection 9 b is closer to the axis portion 4 than the projection 7 b is.
With this configuration, the axis portion 4 only slightly moves even if a force having an upward component is applied to the axis portion 4. Referring to figref[FIG. 6(] a), when an upward force is applied to the axis portion 4 retained in the path 7, the force and the upper edge of the path 7 cause a resultant force acting on the axis portion 4, and the axis portion 4 moves along the edge of the path 7.
On the other hand, when an upward force is applied to the axis portion 4 in the path 9 illustrated in figref[FIG. 7] , the projection 9 b located directly above the axis portion 4 causes a resultant forcer to act in the downward direction as indicated by the arrow in figref[FIG. 8] . Thus, the axis portion 4 is less likely to move upward along the edge of the path 9. As a result, this variation has an advantage that the target object 1 scarcely rattles even if an upward force is applied to the target object 1.
<Second Variation>
A second variation of this embodiment will be described below with reference to figref[FIG. 9] .
figref[FIG. 9] is an enlarged view of one of paths 10 formed in a wall-mount frame 3 used in a mount bracket system according to the second variation. As illustrated figref[FIG. 9] , the path 10 has an opening 10 a which opens upwardly in the vertical direction of the wall-mount frame 3. From the opening 10 a, the path 10 decreases in width downwardly in a gradual manner to have its width substantially equal to a width W 1. The width W 1 is larger than the diameter of the axis portion 4.
The path 10 of this variation extends parallel to the vertical direction. Further, the lower end of the path 10 serving as the retaining point for the axis portion 4 is formed such that the distance between both lateral sides of the lower end is equal to a width W 2. More specifically, the lower end of the path 10 is formed by cutting out the edge in such a manner that the width of the path 10 increases from the width W 1 to the width W 2 through projections 10 b defining a width W 3 which is smaller than the width W 1. The width W 3 is larger than the diameter of the axis portion 4. Thus, the two projections 10 b each project toward the inside of the path 10 from the edge above the retaining point where the axis portion 4 is retained. Accordingly, the projections 10 b can control upward movements of the axis portion 4. Although it is not necessarily required to provide the projections 10 b at two points, the projections 10 b provided at two points are more preferable than one projection 10 b provided at a single point.
As described above, upon insertion of the wall-mount part 2 into the opening 10 a of the path 10 of the wall-mount frame 3, the axis portion 4 of the wall-mount part 2 is moved by gravity and reaches the lower end of the path 10, where the axis portion 4 is retained.
The projections 10 b, which are formed by cutting out the wall-mount frame 3, and the wall-mount frame 3 are made of the same material.
With this configuration, in most cases, an upper left portion or un upper right portion of the axis portion 4 comes into collision with the projections 10 b even if a force having an upward component is applied to the axis portion 4. The reason for the collision between the axis portion 4 and the projections 10 b is that the projections 10 b are located above the axis portion 4 retained at the lower end of the path 10 and the axis portion 4 is retained between the cutout portions which defining the width W 2 that is larger than the with W 3. Although the path 10 extends in the vertical direction, since the axis portion 4 is retained at the lower end whose both sides define the width W 2 larger than the width W 3, it is extremely rare a force is applied in such a manner that all of the axis portions 4 provided at four points move upward without coming into collision with both projections 10 b of the paths 10.
When the axis portion 4 comes into collision with the projections 10 b, a repulsive force acting downwardly (acting opposite to the opening 10 a) is generated, as described above. The axis portion 4 of the wall-mount part 2 is consequently moved to the point where the axis portion 4 is retained in the wall-mount frame 3 again. As a result, even if force acting in the vertically upward direction is applied to the axis portion 4, the wall-mount part 2 does not become detached from the wall-mount frame 3.
According to this embodiment and the variations thereof, even if an upward force is applied to the target object 1, the configuration of the wall-mount frame 3 controls the movement of the wall-mount parts 2. As a result, it is possible to prevent the target object 1 from becoming detached from the wall-mount frame 3.
Any article such as various electrical products, heavy objects, and exhibits may be selected as the target object 1. The plasma display panel has been described above as an example. For example, a liquid crystal display panel, a clock, or a painting may be selected as the target object.
However, the present disclosure is particularly useful when a display device is selected as the target object as in this embodiment. Since the present disclosure is resistant to upward impacts applied from below the target object, the present disclosure is useful for installing the target object within arm's reach of a user.
Since the present disclosure allows a target object to move in a specific direction other than the vertical direction, the present disclosure is useful for hanging a target object in a detachable manner.
The stability of the present disclosure increases in proportion to the weight of a target object when the target object is stationary. Therefore, the present disclosure is effective for a heavy object.
In view of the above three advantages of the present disclosure, it is preferable to adopt a display device as the target object.
The mount bracket system of the present disclosure is useful as a system for anchoring a wall-hang heavy object such as a display device to a wall.


The United States is a relative outlier compared to other nations in the high cost of college tuition and fees. For example, according to a late \(2017\) study by the Organisation for Economic Cooperation and Development (OECD), the U.S. has the highest average tuition costs of the \(35\) OECD member countries [9.11.167]. This tuition has increased over time.
in-context


class: center, middle, inverse, title-slide # Data Visualization with ggplot2 ### Jennifer Thompson, MPH ### 2018-06-06 --- class: inverse, middle ## `ggplot2`: data visualization system based on the **grammar of graphics** -- - Quickly make beautiful, high-quality visualizations - Map plot characteristics directly to qualities of data - Automatically create informative plot legends - Show subsets of data using small multiples --- # Goals We will understand how: - Data are mapped to `aesthetics` - Plots are built in layers by `geoms` - Control aesthetics using `scales` - Show small multiples using `facets` - Control axes and legends using `scales/guides` - Change plot appearance using `themes` and other options - Save plots using `ggsave()` ## Plan 1. General overview of key concepts: `aesthetics`, `geoms`, layering, `scales`, `facets`, `themes` 1. Step-by-step example, to demonstrate details **Note**: This is not an exhaustive tutorial; it is an overview of the features I use most often. Much more at `ggplot2.tidyverse.org`! --- # The Grammar of Graphics - Largely developed by Leland Wilkinson in [*The Grammar of Graphics*](https://www.springer.com/us/book/9780387245447) - Extended by Hadley Wickham ([paper](http://vita.had.co.nz/papers/layered-grammar.pdf)), original author of `ggplot2` -- .pull-left[ ### A little time learning the grammar ➡ ] .pull-right[ ### Power, ease in creating beautiful, informative graphics ] -- *(compare this to trying to remember all the arguments to `par`)* --- # Components of Statistical Graphics - Data - Aesthetic mappings of the data (eg, location or size) - Geometric objects (ie, the shape of the data) - Scales - Statistical transformation - Coordinates -- .pull-left[ ```r ggplot( data = df, aes(x = xvar, y = yvar) ) + geom_point(stat = "identity") + scale_x_continuous( limits = c(min(df$xvar), max(df$xvar)), name = "X Axis" ) + scale_y_continuous( limits = c(min(df$yvar), max(df$yvar)), name = "Y Axis" ) ``` ] .pull-right[  ] --- .pull-left[ ### Base R ```r with(df, plot(yvar ~ xvar)) ``` ![](datavis_ggplot2_files/figure-html/baser-1.png) ] .pull-right[ ### ggplot2 ```r ggplot( data = df, aes(x = xvar, y = yvar) ) + geom_point() ```  ] -- ### **Notice**: ggplot2 knows which stat, scales to use by default --- class: inverse, middle, center # It Always Starts with Data `ggplot(data = ..., ...)` Everything **starts** with a data.frame. Anything that represents **data** on the plot must be within a data.frame. --- # Represent Data with `aesthetics` - "Aesthetics" = how we map the **values** of data to the **appearance** of the plot - Examples: - X, Y axis values - Color, shape, sizes of points - Opacity, fill of shapes --- ```r print(head(df, n = 3), digits = 2) ``` ``` ## xvar yvar ## 1 -0.34 -0.08 ## 2 -1.64 -1.03 ## 3 -1.06 -0.78 ``` ```r ggplot( * data = df, aes(x = xvar, y = yvar) ) ``` --- ```r print(head(df, n = 3), digits = 2) ``` ``` ## xvar yvar ## 1 -0.34 -0.08 ## 2 -1.64 -1.03 ## 3 -1.06 -0.78 ``` ```r ggplot( data = df, * aes(x = xvar, y = yvar) ) ``` .pull-left[ ![](datavis_ggplot2_files/figure-html/aes_eg_3-1.png) ] -- .pull-right[ ### What Do You Notice? - Correct X, Y limits - Axis labels - ...no actual data ] -- ### We haven't told it *how* to show the data! --- class: center, inverse, middle # `aesthetics` + `geoms` = 👯 --- # Represent Data with `geoms` `geoms` determine the **shape** of the data. .pull-left[ ```r ggplot( data = df, aes(x = xvar, y = yvar) *) + * geom_point() ``` ] -- .pull-right[ ![](datavis_ggplot2_files/figure-html/geom_eg_run-1.png) ] --- # Represent Data with `geoms` `geoms` determine the **shape** of the data. .pull-left[ ```r ggplot( data = df, aes(x = xvar, y = yvar) *) + * geom_line() ``` ] -- .pull-right[ ![](datavis_ggplot2_files/figure-html/geom_line_eg_run-1.png) ] --- .pull-left[ ## Different `geoms`... ] .pull-right[ ## different `aesthetics` ] The `aesthetics` you need depend on the `geom` you want to show. Examples: - `geom_point`, `geom_line` each need only X, Y values - `geom_ribbon` needs X, but rather than a single Y, it needs `ymin` and `ymax` -- ### Your Turn! Look at the help files for these `geoms` and see what `aesthetics` each one needs. ``` library(ggplot2) ?geom_line ?geom_boxplot ?geom_bar ?geom_ribbon ``` --- # Your Turn! Using the `gapminder` dataset from the year 2007, show the relationship between `gdpPercap` and `lifeExp` using `aesthetics` and `geoms`. ```r # install.packages("gapminder") library(gapminder) head(gapminder) ``` ``` ## # A tibble: 6 x 6 ## country continent year lifeExp pop gdpPercap ## <fct> <fct> <int> <dbl> <int> <dbl> ## 1 Afghanistan Asia 1952 28.8 8425333 779 ## 2 Afghanistan Asia 1957 30.3 9240934 821 ## 3 Afghanistan Asia 1962 32.0 10267083 853 ## 4 Afghanistan Asia 1967 34.0 11537966 836 ## 5 Afghanistan Asia 1972 36.1 13079460 740 ## 6 Afghanistan Asia 1977 38.4 14880372 786 ``` ```r gap2007 <- subset(gapminder, year == 2007) ``` --- # Your Turn! ```r p <- ggplot( data = gap2007, * aes(x = gdpPercap, y = lifeExp) ) ``` .pull-left[ ```r p + * geom_point() ```  ] .pull-right[ ```r p + * geom_line() ```  ] --- # `geoms` + `stats` Some `geoms` require the user to supply all the information needed to map each point. - `geom_point`, `geom_line`, `geom_ribbon` -- Others use `stats` behind the scenes to summarize the data. .pull-left[ ```r ggplot( data = df, aes(x = 1, y = yvar) ) + geom_boxplot() ``` ![geom_boxplot aesthetics](images/geom_boxplot_aes.png) ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-8-1.png) ] Often we won't need to call `stats` explicitly; `geoms` have excellent defaults that do much of the work for us! --- class: inverse, middle, center # Layers = Power 💪 --- ## Scenario: Raw Data + Regression Line We want to represent the same data, using a summary as well as the raw data. We can do this by **layering** `geoms`. .pull-left[ ```r ggplot( data = gap2007, aes(x = gdpPercap, y = lifeExp) ) + * geom_point() ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-10-1.png) ] --- ## Scenario: Raw Data + Regression Line We want to represent the same data, using a summary as well as the raw data. We can do this by **layering** `geoms`. .pull-left[ ```r ggplot( data = gap2007, aes(x = gdpPercap, y = lifeExp) ) + geom_point() + * geom_smooth() ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-12-1.png) ] --- ## Scenario: Raw Data + Regression Line We want to represent the same data, using a summary as well as the raw data. We can do this by **layering** `geoms`. .pull-left[ ```r ggplot( data = gap2007, aes(x = gdpPercap, y = lifeExp) ) + geom_point() + geom_smooth() + * geom_rug() ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-14-1.png) ] --- # Your Turn! Summarize and show raw data for each country's gross domestic product (`gdpPercap`). For extra credit 😁, do this separately for each **continent**. - What `geoms` would you use? - What `aesthetics` would you use? -- .pull-left[ ```r ggplot( data = gap2007, aes(x = continent, y = gdpPercap) ) + geom_boxplot() + geom_point() ``` ### What would you change? ] .pull-right[  ] --- # Positions `positions` help us change the position of data a bit. Positions are still based on `aesthetics`, but sometimes it is helpful to modify those values. For example, you may have many single points with the same value, or several groups contained within one value. -- Common `position` functions: - `position_dodge()`: vertical position stays the same; horizontal changes - `position_stack()`: stacks bars on top of one another - `position_fill()`: stacks bars *and* standardizes each to the same height - `position_jitter()`: adds random noise to values to avoid overplotting --- # Example: Barcharts .pull-left[ ```r rct_df <- data.frame( trt = factor(c("A", "A", "B", "B")), sex = factor(rep(c("Male", "Female"), 2)), npts = c(52, 48, 65, 75) ) ``` ```r ggplot( data = rct_df, aes(x = trt, y = npts, group = sex, fill = sex) ) + geom_bar( stat = "identity", * position = position_dodge() ) ``` ] .pull-right[ ### `position_dodge()`  ] --- # Example: Barcharts .pull-left[ ```r rct_df <- data.frame( trt = factor(c("A", "A", "B", "B")), sex = factor(rep(c("Male", "Female"), 2)), npts = c(52, 48, 65, 75) ) ``` ```r ggplot( data = rct_df, aes(x = trt, y = npts, group = sex, fill = sex) ) + geom_bar( stat = "identity", * position = position_stack() ) ``` ] .pull-right[ ### `position_stack()`  ] --- # Example: Barcharts .pull-left[ ```r rct_df <- data.frame( trt = factor(c("A", "A", "B", "B")), sex = factor(rep(c("Male", "Female"), 2)), npts = c(52, 48, 65, 75) ) ``` ```r ggplot( data = rct_df, aes(x = trt, y = npts, group = sex, fill = sex) ) + geom_bar( stat = "identity", * position = position_fill() ) ``` ] .pull-right[ ### `position_fill()`  ] --- # Positions Because `positions` are *functions*, we can add arguments to control them further. .pull-left[ ```r ggplot( data = rct_df, aes(x = trt, y = npts, group = sex, fill = sex) ) + geom_bar( stat = "identity", position = * position_dodge2(padding = 0.2) ) ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-27-1.png) ] --- # Positions But if we want the default position settings, we can use shortcuts: .pull-left[ ```r ggplot( data = rct_df, aes(x = trt, y = npts, group = sex, fill = sex) ) + geom_bar( stat = "identity", * position = "dodge2" ) ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-29-1.png) ] --- # Your Turn! Take the boxplot we made earlier and use a `position` to reduce the overplotting of the raw data. .pull-left[ ```r ggplot( data = gap2007, aes(x = continent, y = gdpPercap) ) + geom_boxplot() + geom_point() ``` ] .pull-right[  ] --- # Your Turn! .pull-left[ ```r ggplot( data = gap2007, aes(x = continent, y = gdpPercap) ) + geom_boxplot() + geom_point( * position = "jitter" ) ``` ] .pull-right[  ] --- # Your Turn! .pull-left[ ```r ggplot( data = gap2007, aes(x = continent, y = gdpPercap) ) + geom_boxplot() + geom_point( position = * position_jitter(width = 0.25) ) ``` ] .pull-right[  ] --- # Inheritance ### Did You Notice... ...so far, we have only explicitly specified our `data` and `aesthetics` in the initial `ggplot()` call? Even when we had three separate layers! -- `ggplot2` uses **inheritance**. This means that each layer uses the same `data` and `aesthetics` set in `ggplot(...)`, unless we tell it otherwise. - **Simplicity**: Inheritance means we don't have to specify data and aesthetics multiple times - **Power**: We can use different datasets or aesthetics for each layer if we want to --- ## Example of Inheritance: Marginal Effects Plots .pull-left[ We may show the point estimate and confidence interval for a continuous variable from a linear regression model using `geom_line` and `geom_ribbon`, then show the *original, unadjusted* data using `geom_point`.  ] .pull-right[ ```r ggplot( data = predvals, aes(x = pointest, y = adjvalue) ) + ## Use inherited data; ## specify aesthetics geom_ribbon( aes(ymin = lcl, ymax = ucl) ) + ## Use inherited data + aesthetics geom_line() + ## Add raw data geom_point( aes(x = covar, y = orgvalue), data = orgdata ) ``` ] --- class: inverse, middle, center # ⚖ Scales for Details ⚖ .pull-left[ ## aesthetics **What** data is mapped to which plot characteristic `aes(x = ...)` ] .pull-right[ ## scales **How** to map
data to plot characteristics `scale_x_...(...)` ] --- ## Boxplot Example .pull-left[ ### `aes(thetics)` Put `gdpPercap` on Y axis ```r ggplot( data = gap2007, aes(x = continent, y = gdpPercap) ) + geom_boxplot() + geom_point() + * scale_y_continuous( * limits = c(0, 5000), * breaks = seq(0, 5000, 1025), * labels = scales::comma, * name = "GDP per Capita" * ) ``` ] .pull-right[ ### `scales` - Set the axis limits - "Break" axis at these places - "Name" the axis "GDP Per Capita" ![](datavis_ggplot2_files/figure-html/unnamed-chunk-39-1.png) ] **Note**: `ggplot2` automatically set gridlines at our break points! --- ## Barchart Example **Note** how `scales` control the legend! .pull-left[ ### `aes(thetics)` "Fill" the bars with colors by sex ```r ggplot( data = rct_df, aes(x = trt, y = npts, group = sex, fill = sex) ) + geom_bar( stat = "identity", position = "dodge2" ) + * scale_fill_hue( * h = c(90, 270), l = 40, * ## change *hues*, *lightness* * name = "Patient Sex" * ## change *name* * ) ``` ] .pull-right[ ### `scales` - Use a different color palette - Change name to "Patient sex" ![](datavis_ggplot2_files/figure-html/unnamed-chunk-41-1.png) ] --- # Types of `scales` **Scales** generally correspond to **aesthetics**. Some common scale types: - `scale_[x, y]_[continuous/discrete]` - `scale_[colour, fill]_[many options!]` - `scale_size_...`, `scale_shape_...`, `scale_alpha_...` This is *not* an exhaustive list. See the [`ggplot2` reference pages](http://ggplot2.tidyverse.org/reference/index.html) for more options. *Note: For `color` scales and aesthetics, you can use either `color` or `colour`.* -- `scales` have intelligent default values, but you can use different scale types to use specific values you choose. Examples: - A particular color palette - Beginning and ending sizes (maybe you want the smallest size to still be seen on a projector) - Breaks on X, Y axes at clinically relevant points --- # Your Turn! Using the boxplot we made earlier, use `scales` *(and maybe `aesthetics`)* to 1. Change the name of the X axis 1. Make each country's raw data a different color 1. *Not* include a legend `?scale_x_discrete` `?scale_color_hue` -- .pull-left[ ```r ggplot( data = gap2007, aes(x = continent, y = gdpPercap) ) + geom_boxplot(outlier.shape = NA) + geom_point( * aes(color = continent), position = position_jitter(width = 0.2), alpha = 0.6 ) + * scale_x_discrete(name="Continent") + * scale_color_hue(guide = FALSE) ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-43-1.png) ] --- # Choosing a color scale By default, `ggplot2` uses color scales that allow for the most difference between categories on a [color wheel](), or to show a spectrum of continuous values. You can change these defaults in several ways, including: - Tweak the defaults with `scale_color_hue()` or `scale_color_gradient()` - for example, change the gradient color from the default blue to green, or change the range of hues for a categorical variable - Use one of the built-in ColorBrewer schemes, which are built to handle sequential, diverging, and qualitative color schemes (`scale_color_brewer()` for categorical, `scale_color_distiller()` for continuous) - Supply a manual color scheme, using words like `"blue"` or hex colors (eg, `#FAFAFA`): `scale_color_manual()` - I personally like the `viridis` color schemes. *(These are not currently included in `ggplot2` itself, but will be in the next version released to CRAN this summer. You can install the [`viridisLite`](https://cran.r-project.org/package=viridisLite) package to use them now.)* These scales print well, even in black & white, and are built to be perceived by people with color blindness. (All scale options above also apply to `scale_fill_xxxx`) --- # Color Scale Examples: Default Hues ```r p <- ggplot(data = gap2007, aes(x = gdpPercap, y = lifeExp)) + geom_point(aes(color = country, size = pop), alpha = 0.5) ``` ```r p + scale_color_hue(guide = FALSE) ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-45-1.png) --- # Color Scale Examples: Manual Values ```r p + scale_color_manual(values = country_colors, guide = FALSE) ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-46-1.png) --- # Color Scale Examples: `viridis` ```r library(viridisLite) ## or install development version of ## ggplot2 from Github p + scale_color_viridis_d(guide = FALSE) ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-47-1.png) --- class: inverse, middle, center # 🔠 Same Concept, Many `facets` 🔢 We can use `facets` to show the same visualization for related groups. --- # Example: GDP vs Life Expectancy ```r ggplot(data = gap2007, aes(x = gdpPercap, y = lifeExp)) + * facet_wrap(~ continent) + geom_point() + geom_smooth() ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-48-1.png) --- .pull-left[ ## `facet_wrap()` You have **one** categorical variable ] .pull-right[ ## `facet_grid()` You have **two** categorical variables, want to show each combination ]
 Both have these arguments (among others): - `nrow`, `ncol`: if you want a specific layout - `scales` - `fixed`: default; same for every panel - `free_y`, `free_x`, `free`: allow X and/or Y axis to change for each panel --- ### `facet_grid()` example *First + last years available for each continent in the `gapminder` data* .pull-left[ ```r ggplot( data = subset( gapminder, year %in% c(1952, 2007) & !(continent == "Oceania") ), aes(x = gdpPercap, y = lifeExp) ) + * facet_grid(year ~ continent) + geom_point() + geom_smooth() ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-50-1.png) ] -- Leaving scales consistent between panels is great for comparisons between panels (like here). If we are more interested in informing than comparison, we may want to let the scales vary by panel. --- ### `facet_grid()` example .pull-left[ ```r ggplot( data = subset( gapminder, year %in% c(1952, 2007) & !(continent == "Oceania") ), aes(x = gdpPercap, y = lifeExp) ) + facet_grid( year ~ continent, * scales = "free_x" ) + geom_point() + geom_smooth() ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-52-1.png) ] -- The X axis scales for each column are still the same for the two *rows*, allowing us to see the differences between 1952 and 2007 clearly for each continent. But the X axis scales are different from *column to column*; we can see the relationships for Africa without being affected by the larger GDPs found in Europe, for example. --- # Your Turn! Using the original `gapminder` data for 1952 and 2007, update your boxplots of GDP by continent to show one column for each of those two years, and one row for each continent. *Hint: You can set the X aesthetic to always be 1.* -- .pull-left[ ```r ggplot( data = subset( gapminder, year %in% c(1952, 2007) ), aes( * x = 1, y = gdpPercap ) ) + * facet_grid( * continent ~ year, * scales = "free_y" * ) + geom_boxplot() + geom_point() ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-54-1.png) ] --- class: inverse, middle, center # 🌺 Themes 🌺 Give your plots a different look Control plot elements not related to data --- # Change the look of your plot Using `ggplot2 themes`, it is easy to give your plots a different look with one line. ```r p <- ggplot(data = gap2007, aes(x = gdpPercap, y = lifeExp)) + geom_point() ``` .pull-left[ ```r p + theme_bw() ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-56-1.png) ] .pull-right[ ```r p + theme_minimal() ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-57-1.png) ] --- # Changing Plot Elements with `themes` We also use `themes` to change elements of the plot that are not related to `data`: .pull-left[ - Increase font sizes - Change colors or font faces - Change plot backgrounds, gridlines ```r p + theme_minimal() ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-58-1.png) ] .pull-right[ ```r p + theme_minimal() + theme( panel.border = element_rect( fill = NA, color = "#b756b9", size = 5 ) ) ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-59-1.png) ] --- # `elements` Pieces of the `theme` are controlled by the `element` functions *(examples)*: - `element_line()`: gridlines, axis lines - `element_text()`: axis labels, titles, captions - `element_rect()`: plot and panel backgrounds, `facet` strip backgrounds - `element_blank()`: can be used for any element to "make it disappear" Use these functions to set aspects like sizes, colors, font faces... --- # Your Turn! Give a boxplot we made earlier a different overall `theme`, then customize at least one element. You might... - Make the axis text **bold** or bigger - Make the gridlines thicker or disappear - Make the `strip.background` a different color -- .pull-left[ ```r p + theme_minimal() + theme( axis.title.x = element_blank(), axis.text.x = element_blank(), strip.background = element_rect(fill = "gray90"), panel.background = element_rect(fill = NA, color = "gray90"), legend.position = "none" ) ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-62-1.png) ] --- # Adding Labels and Titles We may want to add a title to our plot, or a caption to give additional information about how something was defined. Maybe we want to name an aesthetic "Patient Sex" instead of "sex" but with less typing than `scale_x_discrete(name = "Patient Sex")`. `labs()` allows us to set these elements: - `title` - `subtitle` - `caption` - titles for `aesthetics` (these will show up in the legend, or X/Y axis titles) ```r p + labs(x = "My X axis title") ``` -- ## Your Turn! Use `labs()` to add a plot title and change the Y axis title on the plot you just made. --- ## Controlling Non-Data Elements To control elements of the plot that *represent* data, but not in a way directly *tied* to our data, we can still use aesthetic qualities. However, we will set them *outside* the `aes(...)` function. **Example:** We want all our points to be a certain color, or to make a line width thicker to be seen better in a presentation. .pull-left[ ```r ggplot( data = gap2007, aes(x = gdpPercap, y = lifeExp) ) + geom_point( color = "#a7a9ac", alpha = 0.75, size = 1.25 ) + geom_smooth( fill = "#532354", color = "#b756b9", alpha = 0.2, size = 2 ) + geom_rug( alpha = 0.3, color = "#532354" ) ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-65-1.png) ] --- class: inverse, center, middle # 🌎 Full Examples with `gapminder` 🌏 --- ## Goal Create a publication-quality chart showing the relationship between gross domestic product and life expectancy, 1952 and 2007. ### Preparation .pull-left[ 1) Create a subset of the data ```r ## Only look at 1952, 2007 gap_sub <- subset( gapminder, year %in% c(1952, 2007) ) ``` 2) Initialize our plot object ```r gdp_exp <- ggplot( data = gap_sub, aes(x = gdpPercap, y = lifeExp) ) ``` ] .pull-right[ ```r gdp_exp ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-68-1.png) ] --- ## `facet` by year and continent ```r gdp_exp <- gdp_exp + facet_grid(year ~ continent) ``` ![](datavis_ggplot2_files/figure-html/unnamed-chunk-70-1.png) --- ## Add data points We want to use a different color for each country, and make our point sizes vary according to the countries' population size. ```r gdp_exp <- gdp_exp + geom_point( aes(color = country, size = pop), alpha = 0.6 ## to help overplotting ) ``` -- ![](datavis_ggplot2_files/figure-html/unnamed-chunk-72-1.png) --- ## 😱 Fix it! With `scales` As we saw, a legend for color will not be helpful; there are too many countries. However, a legend *would* be helpful for the population sizes. We will use two `scales` to 1) Specify the colors we want, using `scale_color_manual` and `country_colors`, a named vector of hex colors that comes with the `gapminder` package ```r head(country_colors) ``` ``` ## Nigeria Egypt Ethiopia Congo, Dem. Rep. ## "#7F3B08" "#833D07" "#873F07" "#8B4107" ## South Africa Sudan ## "#8F4407" "#934607" ``` 2) Format a legend for our population sizes --- ## Modification of `scales` .pull-left[ ```r gdp_exp <- gdp_exp + scale_color_manual( ## Manually specify colors values = country_colors, ## Turn off the legend for colors guide = FALSE ) + scale_size( range = c(3, 7), labels = function(x){ scales::comma(x / 1000000) }, name = "Population\n(x 1M)" ) ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-75-1.png) ] --- # Exploratory data analysis We see that there is a lot of space on the X axis that may be unnecessary, possibly caused by one point. What point is it? .pull-left[ ```r ggplot( data = gap_sub, aes(x = gdpPercap) ) + geom_histogram() ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-77-1.png) ] -- The extreme outlier in 1952 is from Kuwait; looking at other years in the `gapminder` data, it seems to be a legitimate value, but including it is keeping us from seeing the other data as clearly. We'll exclude it from our plot, but will make a note in a figure caption. --- # Modify X axis `scale` ```r ## Save X axis title to a string so we can see the whole thing xtitle <- "Gross Domestic Product per Capita\n(x $1,000 USD)" ``` .pull-left[ ```r gdp_exp <- gdp_exp + scale_x_continuous( limits = c(0, 55000), labels = function(x){ scales::dollar(x / 1000) }, name = xtitle ) ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-80-1.png) ] --- ## Add Labels ```r plottitle <- "GDP vs Life Expectancy, 1952 and 2007" captitle <- sprintf( "Kuwait's 1952 values were excluded due to its extremely high GDP of $%s.\nAverage life expectancy at that time was %s.", format( round(subset(gap_sub, year == 1952 & country == "Kuwait")$gdpPercap), big.mark = "," ), round(subset(gap_sub, year == 1952 & country == "Kuwait")$lifeExp, 1) ) ``` .pull-left[ ```r gdp_exp <- gdp_exp + labs( title = plottitle, subtitle = "Source: gapminder.org/data", caption = captitle, y = "Life Expectancy (Years)" ) ``` ] .pull-right[ ![](datavis_ggplot2_files/figure-html/unnamed-chunk-83-1.png) ] --- # Modify Theme Elements .pull-left[ We want to - Add space between the X axis and title - Add space between X axis title and caption - Italicize the caption - Bold plot titles, axis titles, and strip text - Move the legend to the bottom ] .pull-right[ ```r gdp_exp <- gdp_exp + theme_bw() + theme( plot.title = element_text( face = "bold", size = 16 ), axis.title.x = element_text( vjust = 0 ), plot.caption = element_text( vjust = 0, face = "italic" ), strip.text = element_text( face = "bold", size = 12 ), legend.position = "bottom", legend.direction = "horizontal" ) ``` ] --- # Final Result ![](datavis_ggplot2_files/figure-html/unnamed-chunk-85-1.png) --- # Your Turn! Using any of these strategies (or others!), make changes to the boxplots we've been working with. Some ideas: - Changing the color of the boxplots, or removing the inside altogether - Changing the breaks of the Y axis - Adding axis, plot titles - Citing the source of our data Any other ideas are welcome! --- # Saving Your Plots The `ggsave` function allows us to easily save our figures in several formats. For example, you might want to create a PDF of the figure for a journal submission, but have a PNG for PowerPoint presentations. .pull-left[ ```r ggsave( * filename = * "gapminder_gdplifeexp.pdf", gdp_exp, * device = "pdf", path = "figures/", width = 10, height = 7, units = "in" ) ``` ] .pull-right[ ```r ggsave( * filename = * "gapminder_gdplifeexp.png", gdp_exp, * device = "png", path = "figures/", width = 10, height = 7, units = "in" ) ``` ] -- ## Your Turn! Save the results of your plot to a `figures/` directory in two different formats. --- # Helpful Resources - [`ggplot2` reference page](ggplot2.tidyverse.org) - Cookbook for R - [Data visualization](http://r4ds.had.co.nz/data-visualisation.html) and [graphics for communication](http://r4ds.had.co.nz/graphics-for-communication.html), *R for Data Science* - [`ggplot2` extensions](http://www.ggplot2-exts.org/gallery/), for `geoms` that are not included in `ggplot2` itself - [`ggthemr`]() for building custom themes and color palettes *(not currently on CRAN; install from Github)* - Color palettes: - ColorBrewer - [colorhexa.com](colorhexa.com) - Theoretical basis: - [`ggplot2`: Elegant Graphics for Data Analysis](http://amzn.to/2fncG50) - [Grammar of Graphics]()


|
TTK
|
#include <ContourTreeAlignment.h>
Public Attributes | |
| std::shared_ptr< AlignmentNode > | node1 |
| std::shared_ptr< AlignmentNode > | node2 |
| float | scalardistance |
| float | area |
| float | volume |
| int | freq |
| std::vector< std::pair< int, int > > | arcRefs |
Definition at line 61 of file ContourTreeAlignment.h.
| std::vector<std::pair<int, int> > AlignmentEdge::arcRefs |
Definition at line 70 of file ContourTreeAlignment.h.
| float AlignmentEdge::area |
Definition at line 66 of file ContourTreeAlignment.h.
| int AlignmentEdge::freq |
Definition at line 68 of file ContourTreeAlignment.h.
| std::shared_ptr<AlignmentNode> AlignmentEdge::node1 |
Definition at line 63 of file ContourTreeAlignment.h.
| std::shared_ptr<AlignmentNode> AlignmentEdge::node2 |
Definition at line 64 of file ContourTreeAlignment.h.
| float AlignmentEdge::scalardistance |
Definition at line 65 of file ContourTreeAlignment.h.
| float AlignmentEdge::volume |
Definition at line 67 of file ContourTreeAlignment.h.


| DOSE: |
6 oz |
oral |
DXM |
(liquid) |
After reading the text contained here, I decided that a trip would be in order. Having waltzed many a time with shrooms and acid, a little DXM had an adventerous ring to it.
I went to my local drug store and looked for the drixoral capsules, of which there were none, so I purchased the recommended maximum strength formula and quickly got home to measure out my dose.
I settled with a 6 in the 2nd plateau. It seemed proper to get my feet wet and not go plunging into an abyss that I could not get myself out of. I consumed the dosage at 6:20 in the evening and the effects had cleared pretty much by 12:15, a nice 6 hour dance with the devil.
The onset came with the swiftness of a jaguar. Slow but steady, it crept into my consciousness. The first noticeable effects were the doubling of my vision. Everything was in doubles and I had this drunken feeling. It was then that I knew something grand was to happen, and being that I live alone, I decided to employ a sitter, just for gee whiz.
I venture on a 10 minute drive that was at the very least interesting. Complete concentration was needed for this drive. No mistake was going to be tolerated, not by me and certainly not by the already nervous locals. A quick hop skip and a jump and I arrived at a friends house that I had not seen in close to a year. He was married now and the presence of his wife was a bit unnerving. But she retired to the bedroom and we went for a walk. At this point the double vision had not decreased (as it would become the trademark of this experience) but the feelings had intensified. All around me objects were making a bold stand. Not moving or changing, but standing out as if to declare its foot in this new reality. Another noticeable thing was a bit of jumpiness. Sound seemed to leap out of nowhere and I was quick to turn my head to seek the source. It was usually just my friend talking or a car driving by, but the sound never seemed to originate from where it actually came from.
At this point my sitter had a joint, so we drove back to my apartment to use the bong. It was at this point that the effect began to really intensify. I had no idea of the time. Time had ceased to exist and since I don't wear a watch it was all the more timeless. For any activity I tried on this stuff, it required my full attention. Once we got into the apartment, I felt this need to have my TV, radio, and air conditioner on. Except that when I went to do each one of these things, I got turned around. Any turn blurred the world and once I stayed still, the world had to situate itself. So we smoked the bong and began a little dialogue.
The conversation began with me explaining what I took, how I configured the dosage, and how I found out about it. The next thing I know (and to this day I don't remember how we got to the topic) we were engrossed in a conversation about eternity. One odd thing (amongst others) was that my sitter wasn't on anything, but it seemed as if he was. With shrooms or acid, one usually doesn't like to be around others who aren't experiencing a trip, it makes you feel, I don't know, apprehensive, but not with DXM. We were able to carry a wonderful conversation on the human mind and the grappling of the concept of eternity. And how space was so large that it would eventually come back on itself, but this was still eternity.
Being that the man was married, he had to be back at 10, so the conversation must have been around 9ish. He didn't bring his car, so I had to drive him. Only problem was I couldn't drive at this point. Everything was a task save for conversation. Most objects had my attention, and then just as quickly, I was on to something else. Concentration on one task was very difficult. We went to another friends house to have him drive me back from the sitters. Needless to say I shouldn't have been driving, but I am too mobile for my own good.
I would day I got back to my apartment around 11-ish and sat down on my couch. I was exhausted, all the running around had drained me completely. So I put on some Coltrane and begun to draw. I told myself that I would draw or write what ever came into my mind first. I wrote, and looked down at the paper. Before, in very chicken scratched handwriting was the phrase, 'Are you what you expected. Well R you?' Why this was on the paper, I don't know, what it means, I can guess, but I just posed the question to myself and sat in subtle contemplation for about another hour.
At 12 I went to bed, but did not sleep. I was in complete darkness and remembered something someone wrote about visuals in darkness, so I concentrated and the head board of my bed began to sway back and forth. This was amusing, but not alarming. Hallucinations don't scare me, it is when you can't distern a hallucination from what is really going on that my nerves are up.
My friends came by at 12:35 and I told them about what I had done and the curiosity was peaked. I spent the next 7 hours watching over them as they tripped and at 6:00am, I went to work. But those events are of a completely differant nature. I had my experience.
In closing, if you are seasoned, or a first timer, this is a good thing to try. I recommend a 2nd plateau for first timers and for veterans, savor the 3rd for special occasions.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Crossfire was a game made for the “dedicated and persevering gamester”. The January 1982 Softline review described it as challenging and time-consuming where perhaps a “third, supercoordinated appendage” is needed. A lack of a pause button contributes to the game’s difficulty.
Quick Start
In Crossfire, press I,J,K and L to move up, down, left and right and E, S, D and F. Destroy as many enemies as possible and stay alive as long as possible to achive a high score.
In the January issue of Softline, the high score for Crossfire was 241,800.
If you ever can't control the game with your keyboard, try clicking on the screen
Impact
Despite being described as very difficult in Softline, the game is also touted as “a new twist at arcade games with delightfully colorful beasties and smooth animation”. However, the game was not rated in Softalk in January or February of 1982.
Production History
Crossfire was released in 1981. It was created by Jay Sullivan and published by On-line Systems (now and more commonly known as Sierra On-line). Softline stated that Jay Sullivan provided a game that offered hours of challenge and enjoyment.
The Game page contains game play information, a link to a manual (if available), and the impact and history of the game. This is where you will upload and play the game you downloaded on the Magazine page.


Safe-in-man broad-spectrum antiviral agents and coronaviruses they inhibit. A snapshot is taken from https://drugvirus.info/ website. Different shadings indicate different development status of BSAAs. Grey shading indicates that the antiviral activity has not been either studied or reported.


| 类 | 说明 |
|---|---|
| IPv6Address |
Immutable representation of an IPv6 address.
|
| IPv6AddressHelpers |
Helper methods used by IPv6Address.
|
| IPv6AddressPool |
Immutable representation of an IPv6 address pool.
|
| IPv6AddressRange |
Immutable representation of a continuous range of IPv6 addresses (bounds included).
|
| IPv6Network |
Immutable representation of an IPv6 network based on an address and a prefix length.
|
| IPv6NetworkHelpers |
Helper methods used by IPv6Network.
|
| IPv6NetworkMask |
Immutable representation of an IPv6 network mask.
|
Copyright © 2013. All Rights Reserved.


Toggle navigation
CookTogether
About
Contact
Welcome to CookTogether
To complete your profile, tell us what kind of food you eat.
Low-Carb
High-Protein
Low-Fat
Balanced
High-Fiber
Low-Sodium
No-Sugar
Sugar-Conscious
Vegetarian
Vegan
Paleo
Gluten-Free
Wheat-Free
Dairy
Egg-Free
Soy-Free
No-Tree-Nuts
Low-Potassium
Next


Claire Stolp
Portfolio
Contact
About
Portfolio
Pokemon
Word Game
Cat Tier
Showdown
Trivial Game
GIFtastic
Project 5


The Who are first honored as London unveils Music Walk of Fame
by The Jakarta PostBritish rock band The Who became the first act to receive a paving stone on the Music Walk of Fame in London on Tuesday, in the unveiling of a new cultural attraction that echoes the starry sidewalks of Hollywood Boulevard.
Following the presentation of the Walk's founding stone, The Who's two surviving members Roger Daltrey and Pete Townshend posed by their own plaque, depicting a music record, laid out in London's buzzing Camden district.
The Music Walk of Fame will honor artists and others working in the industry in a series of unveilings between the Roundhouse and the Koko performance venues in the north London district that is popular with musicians.
"Camden has always been vital to London’s thriving music scene and is, as we all know, a world-renowned hub for the arts," The Who said in a statement.
Read also
"As Londoners, it’s very surreal to be immortalized in stone on Camden High Street, and it’s quite something to know that people can pop by and see us anytime, albeit virtually."
Up to 20 stones will be laid out each year, organizers have said, and inductees, chosen by a panel, will be honored in several categories: icon, innovator, inspiration, industry, unsung hero and artist of the year.
A dedicated app will allow visitors to learn more about the history of the music industry.


--- title: Dropdowns (Drill Down) section: Components ---
Each
drilldown-item
must have a unique id. To switch to the nextdrilldown-item
, add the attributedata-drilldown="next"
and ahref="#theDrilldownItemId"
attribute linking to thedrilldown-item
you would like to switch to.The value
next
ondata-drilldown
should slide the items to the left and the valueprev
should slide to the right.On next item:
- Add classes
drilldown-transition transitioning
todrilldown-current drilldown-item
- Add classes
drilldown-transition transitioning
to the incomingdrilldown-item
- The height of the next slide can be found on the
drilldown-item-inner
element and add height todrilldown-inner
- Once height has finished transitioning, use
transform: translateX(-100%);
on both slides if they are in orderOn prev item:
- add classes
drilldown-transition transitioning
and position each item usingtransform: translateX(-100%);
- Set the height on
drilldown-inner
- Once height has finished transitioning, remove the transforms on each item
Next slide goes back to beginning:
drilldown-current
needstransform: translateX(-100%);
- Next slide needs
transform: translateX(100%);
- On transition,
drilldown-current
transform: translateX(-200%);
and next slide remove transform
drilldown-item
on click. The javascript is not bundled with Clay CSS.
Add
drilldown-height-sm
todrilldown
to set a fixed height of272px
.Add
drilldown-height-md
todrilldown
to set a fixed height of344px
.
``````


Below is a list of titles for illustrations in Rose manuscripts. These titles are in English, but the character names in the titles are mostly in French (a list of character names and variants has also been provided). Miniatures can be found by searching for the illustration title in the advanced search tool.
The "position" column shows the average page number of illustrations with that title. The "frequency" column shows the number of times an illustration with that title occurs in all the manuscripts in our collection.


Tips to successfully co-parent with a toxic ex
by Anne WangechiEstablish boundaries
After breaking up or divorcing with your partner, life must go on.  In as much as they might still feel the effect of not having both their parents together, nothing much should change when it comes to their wellbeing.
But what if you have one of those crazy exes that always make things so difficult? We understand that this can be really difficult but for the sake of the children, you got to try and make co-parenting work.
ALSO READ: Approximately 2 million working women experience domestic violence and abuse in Kenya
If dealing with a toxic, crazy or narcissistic ex, try these things while co-parenting to save yourself a headache:
1. Only have conversations that pertain the children
If it’s not about the kids, you can as well skip it. Refrain from bringing up past matters that made you fight because you will only be getting yourself in unnecessary trouble. Forget about what they did to you and talk about what is important for the children.
2. Establish boundaries and make them very clear
For co-parenting to work, you both need to be in constant communication. This calls for a lot of discipline to ensure you don’t get yourself in some complicated situation with your crazy ex. Your conversations should always be geared towards the wellbeing of the children but never towards their selfish gains.
Avoid going out with them or doing sleepovers in the name of co-parenting. The meetings you have should be purely for co-parenting purposes.
3. Make a plan
Sit down and literally write down a guideline on how you will go about it if you have to. Talk about what you expect of each other and what roles each of you should play. Make it clear on who pays school fees, who pays for healthcare and who stays with the kids on weekends and holidays. If it’s about picking the kids from school, who will do that? They might seem like simple roles but can cause conflicts if you do not have a clear way forward.
Also, make sure that you stick to that plan.
4. The children should always come first
Your toxic partner must also understand this. Whatever selfish needs they have, they can always wait. In everything that you do, just make sure that you put the children’s needs at the forefront.
5. Take legal action if necessary
If it gets to a point where you feel like your safety is threatened by your toxic ex, don’t be afraid of taking legal action. If they keep threatening you, calling you names in presence of the kids or even threatening to put the kids away from you, seek legal action.


{{ page.section_two_teaser|add_href_target:request|safe }}
{{ page.fact_sheet.fact_sheet_teaser }}
{{ column.teaser }}
DIT can advise you on doing business abroad, and help put you in touch with other people who can help such as lawyers and distributors.


Toggle navigation
Vast Challenge 2016
Prox-out
Prox-out
Prox_out route
prox-mobile
Building
Building Power
Building Temperature
Building Air Flow
Harmful Gas
Water Heater
Time Range:
-
Day:
Department:
Total:
All
Administration
Engineer
Executive
Facilities
HR
IT
Security
Reference:
1st floor
1-1: 1st floor lobby
1-2: Delicatessen
1-3: Loading
1-4: Elev/Stairs
1-5: Meeting Room
1-6: Conf(conference?)
1-7: Security Stenig's Office
1-8: Security Varja's Office
2nd floor
2-1: 2nd floor lobby
2-2: Engineer's office
2-4: Elev/stairs
2-5: Room2500
2-6: Facility
2-7: Mainly IT, some facility and engin
3rd floor
3-1: Lobby
3-2 & 3-3: Admin/executive
3-4: Elev
3-5: Expansion and stair
3-6: execu-Sten's office


|
MOTS Finder
Find non-star-shaped MOTSs
|
Parent class for numeric expressions. More...
Public Member Functions | |
| def | __init__ (self, domain=None, name=None, verbosity=1, sub_exprs) |
| Base class init for numeric expressions. More... | |
| def | domain (self) |
| Domain on which this expression is defined. More... | |
| def | domain (self, domain) |
| def | name (self) |
| Name given to this instance of the expression. More... | |
| def | name (self, name) |
| def | verbosity (self) |
| Verbosity setting, which may be used during complex computations. More... | |
| def | verbosity (self, verbosity) |
| def | nice_name (self) |
| More descriptive name, which may be overridden by sub classes. More... | |
| def | traverse_tree (self, include_root=False, skip_zeros=False, parents=None) |
| Generator that walks through a complete expression tree. More... | |
| def | print_tree (self, root_name='root', nice_names=True, skip_zeros=False) |
| Print the whole expression tree. More... | |
| def | save (self, filename, overwrite=False, verbose=True) |
| Save the expression object to disk. More... | |
| def | load (cls, filename) |
| Static function to load an expression object from disk. More... | |
| def | __getstate__ (self) |
| Return a picklable state object representing the whole expression. More... | |
| def | __setstate__ (self, state) |
| Restore a complete expression from the given unpickled state. More... | |
| def | __repr__ (self) |
| Return a string representing the whole expression tree. More... | |
| def | force_evaluation_mode (self, use_mp) |
| Override the evaluation mode of future evaluators. More... | |
| def | evaluator (self, use_mp=False) |
| Create an evaluator for the expression in the current state. More... | |
| def | store_domain (self, obj) |
| Store the domain of this expression on the given object. More... | |
| def | str (self) |
| Return the expression and any values of local parameters as a string. More... | |
| def | is_zero_expression (self) |
| Return whether this expression is zero and constant. More... | |
| def | mpmath_context (cls, use_mp) |
Return the mpmath.mp or mpmath.fp contexts. More... | |
| def | context (cls, use_mp, dps) |
| Convenience function to be used as context manager. More... | |
| def | set_sub_exprs (self, sub_exprs) |
| Set/replace sub expressions under public attributes of this object. More... | |
Public Attributes | |
| domain | |
Domain getter/setter automatically updating attributes such as domainX , domainY for 2D expressions. More... | |
| zero | |
| Pointer to the common._zero_function() function. More... | |
Private Member Functions | |
| def | _expr_str (self) |
| String representing the expression with any parameter values. More... | |
| def | _evaluator (self, use_mp) |
| Child classes need to implement this and create their evaluator here. | |
| def | __ensure_mp_contexts (cls, ctx) |
| Ensure the given context can do everything we need. More... | |
| def | __ensure_expr (self, expr) |
| Ensure an object is an expression, converting it if necessary. More... | |
Private Attributes | |
| __verbosity | |
| _domain | |
| Current domain stored for this expression. More... | |
| __sub_expressions | |
| __name | |
| _force_evaluation_mode | |
| Whether evaluators should adhere to the requested evaluation mode or override it. More... | |
Parent class for numeric expressions.
The expression objects cannot be numerically evaluated by themselves. Instead, they can be used to create 'evaluators' for the current parameter values.
They also support building a string representation of the complete expression, including any sub-expressions, and can be stored to disk and loaded back from disk.
The methods a child has to override are:
| def __init__ | ( | self, | |
domain = None , |
|||
name = None , |
|||
verbosity = 1 , |
|||
| sub_exprs | |||
| ) |
Base class init for numeric expressions.
The **sub_exprs
sub expressions given as keyword arguments here are stored in this object and can be accessed with the keys used here. They are used when traversing through a complete expression hierarchy in e.g. print_tree() or traverse_tree().
| domain | (various, optional) Domain to store for this expression. |
| name | (string, optional) Name for the expression. Can be useful to label expressions in a more complex expression tree to indicate their role/meaning. By default, the current class name is used as name. |
| verbosity | (int, optional) Verbosity to be used by child classes through the verbosity attribute. Default is 1 . |
|
private |
Ensure an object is an expression, converting it if necessary.
If expr
is not an expression object, it is converted to a ConstantExpression
.
|
private |
Ensure the given context can do everything we need.
This may be useful to create an object that is interchangeable with mpmath.mp
in most situations.
| def __getstate__ | ( | self | ) |
Return a picklable state object representing the whole expression.
Some care is taken to ensure even mpmath
constants and matrices successfully pickle/unpickle.
| def __repr__ | ( | self | ) |
Return a string representing the whole expression tree.
This string may become relatively large for expressions containing much data (like series expansions with many coefficients).
| def __setstate__ | ( | self, | |
| state | |||
| ) |
Restore a complete expression from the given unpickled state.
|
private |
String representing the expression with any parameter values.
For example, if the expression is a + b x
, with a
and b
parameters and x
the variable, then this method should return for example:
"a + b x, where a=0.3, b=0.5"
If x
is a sub-expressions, be sure to use its str
method and not the _expr_str
. For example:
def _expr_str(self): return ("a + b x, where a=%r, b=%r, x=%s" % (self.a, self.b, self.x.str()))
| def context | ( | cls, | |
| use_mp, | |||
| dps | |||
| ) |
Convenience function to be used as context manager.
This will automatically choose the correct context (mp
or fp
) based on the choice of use_mp
and configure the desired decimal places.
| use_mp | Whether to use mp (if True ) or fp . |
| dps | Decimal places to use in mp computations. |
| def domain | ( | self | ) |
Domain on which this expression is defined.
| def evaluator | ( | self, | |
use_mp = False |
|||
| ) |
Create an evaluator for the expression in the current state.
Use use_mp
to control whether the evaluator will use floating point arithmetics (for False
) or arbitrary precision mpmath computations (for True
). Default is False
.
| use_mp | Boolean indicating whether the evaluator should use mpmath math operations or standard (and faster) floating point operations. This may be ignored if force_evaluation_mode() has been used to override this setting. |
| def force_evaluation_mode | ( | self, | |
| use_mp | |||
| ) |
Override the evaluation mode of future evaluators.
This might be useful in a complicated expression tree when you want e.g. all expressions to be computed using mpmath arbitrary precision arithmetics, except for one very expensive expression which should use floating point arithmetics.
| use_mp | ({None, True, False} ) If None , don't override the evaluation mode and create evaluators with the requested mode. If True or False , ignore the requested evaluation mode when creating an evaluator and use the value set here. |
| def is_zero_expression | ( | self | ) |
Return whether this expression is zero and constant.
Child classes should override this if they can determine whether they're zero. By default, all expressions will deny being zero.
| def load | ( | cls, | |
| filename | |||
| ) |
Static function to load an expression object from disk.
| def mpmath_context | ( | cls, | |
| use_mp | |||
| ) |
Return the mpmath.mp
or mpmath.fp
contexts.
Some of the features of the mp
context are missing on the fp
context. To make these two truly drop-in replacements in the code, the fp
context will be endowed with the missing context handlers like extradps()
etc.
| def name | ( | self | ) |
Name given to this instance of the expression.
| def nice_name | ( | self | ) |
More descriptive name, which may be overridden by sub classes.
| def print_tree | ( | self, | |
root_name = 'root' , |
|||
nice_names = True , |
|||
skip_zeros = False |
|||
| ) |
Print the whole expression tree.
Each expression's key under which it is stored as sub expression will be shown as well as its actual name and the class name.
| root_name | Key name to print for the root expression. |
| nice_names | Whether to use the nice more descriptive name (when implemented) or the usually shorter abstract names. |
| skip_zeros | Whether to skip zero (i.e. unused) sub expressions. |
| def save | ( | self, | |
| filename, | |||
overwrite = False , |
|||
verbose = True |
|||
| ) |
Save the expression object to disk.
| filename | The file name to store the data in. An extension '.npy' will be added if not already there. |
| overwrite | Whether to overwrite an existing file with the same name. If False (default) and such a file exists, a RuntimeError is raised. |
| verbose | Whether to print when the file was written. Default is True . |
| def set_sub_exprs | ( | self, | |
| sub_exprs | |||
| ) |
Set/replace sub expressions under public attributes of this object.
Each of the **sub_exprs
keyword arguments will be stored on this object such that it is accessible via the key name used here as attribute name on the object.
Numeric values given here will be converted to ConstantExpression objects.
| def store_domain | ( | self, | |
| obj | |||
| ) |
Store the domain of this expression on the given object.
| def str | ( | self | ) |
Return the expression and any values of local parameters as a string.
| def traverse_tree | ( | self, | |
include_root = False , |
|||
skip_zeros = False , |
|||
parents = None |
|||
| ) |
Generator that walks through a complete expression tree.
In each iteration, the returned values represent the current node's parents (as a list from root to immediate parent), its key under which it is stored in its parent, and the node itself.
| include_root | Whether to include the root as first item. Default is False . |
| skip_zeros | Whether to skip zero (i.e. unused) sub expressions. Default is False . |
| parents | Optional list of parents of the root. Normally only used internally for the recursion. |
Examples
| def verbosity | ( | self | ) |
Verbosity setting, which may be used during complex computations.
|
private |
Current domain stored for this expression.
|
private |
Whether evaluators should adhere to the requested evaluation mode or override it.
| domain |
Domain getter/setter automatically updating attributes such as domainX
, domainY
for 2D expressions.
| zero |
Pointer to the common._zero_function() function.


I joined the meetup last night and went to my first event last night (the topic was AWS, something I DEFINITELY want to look into more).
I'm hoping to begin volunteering with WIT, as this kind of involvement usually helps me feel more confident in networking.
Speaking of WIT, I submitted an application for their mentoring program this morning, something I've been meaning to do for a while now.


Errors associated with store.
In dictionary stored value with unexpected type
SDLRPCStoreErrorGetInvalidObject = -1
case getInvalidObject = -1


Austin Chinn
Project Portfolio
I am a 4th year Computer Science student that likes some things and does stuff.
Projects
CSE 130
CSE 150


Photography for me is not looking, it’s feeling. If you can’t feel what you’re looking at, then you’re never going to get others to feel anything when they look at your pictures.
Photography for me is not looking, it’s feeling. If you can’t feel what you’re looking at, then you’re never going to get others to feel anything when they look at your pictures.
Photography for me is not looking, it’s feeling. If you can’t feel what you’re looking at, then you’re never going to get others to feel anything when they look at your pictures.
Taking pictures is savoring life intensely, every hundredth of a second.I really believe there are things nobody would see if I didn't photograph them.The camera is an instrument that teaches people how to see without a camera
It’s one thing to make a picture of what a person looks like, it’s another thing to make a portrait of who they are.


Mini Cart
No text
Your Cart
Delete all
Chicken Pizza (1)
LKR 1050.00
Chicken Pizza (1)
LKR 1050.00
Proceed to Checkout
Delivery Details
Saved Address
New Address
Home
No text
Office
Proceed to Checkout


Down to the Sea in Ships (1922)
Grade: 57
This age of this early silent feature is apparent from its company credits. It was produced by the Whaling Film Corporation (probably not a major studio even in those days), and was distributed by Wholesome Film Services. It was filmed on location at New Bedford, Massachussets.
Not surprisingly, the storyline involves whaling. Set in mid-19th century New Bedford, conservative Quaker Morgan (William Walcott) forbids his daughter Patience (Marguerite Courtot) to marry Dexter (Raymond McKee), because Dexter is a miller and has never harpooned a whale. Meanwhile, villainous Finner (Pat Hartigan) schemes to pirate Morgan's whaling ship, and for good measure marry his creepy bookkeeping partner Siggs (J. Thornton Baston) to Patience.
At this point, the experienced viewer wonders how the inevitable plot convolutions will work to foil the plans of Finner and Siggs, and transform Dexter into an accomplished whaler so that he can wed Patience, thereby tying all the loose ends into a happy ending. This is done in predictable fashion, but there are some interesting scenes as a whale is hunted and subsequently slaughtered.
The maritime industry of New Bedford had already seen its best days by 1922, and this film captures the tail end of the whaling era. The film salutes the cameramen (A. G. Penrod and Paul H. Allen) in the opening credits "who, in small boats, stood by their cameras at the risk of their lives to photograph the fighting whales".
"Down to the Sea in Ships" also marks the inauspicious film debut of a seventeen-year-old Clara Bow. She plays the 'mischievous' younger daughter of Morgan, and is a stowaway on the whaling ship.
<EMAIL_ADDRESS>http://members.tripod.com/~Brian_Koller/movies.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


So my BBL no longer appears on Battlelog, and does not do anything. I do still have it installed. Kinda scared to redownload because I don't feel like redoing all settings but I will if I have to.
Using chrome.
Anyone have an idea?
BrainFooLong
Administrator
Are you on https ?
Topicstarter
RamboDC
BrainFooLong wrote:
Are you on https ?
Yes I am. I will try reinstalling I guess. If it still does not work I'll get back here. Ty.
BrainFooLong
Administrator
No, re-install doesn't help.
https is not supported with this extension. This is because of historical purposes and has not been changed yet.
Topicstarter
RamboDC
BrainFooLong wrote:
No, re-install doesn't help.
https is not supported with this extension. This is because of historical purposes and has not been changed yet.
Disabling https did not fix it, but now that I reinstalled it does work. No idea why it suddenly stopped working. Thanks for the help anyway.


This class will provide a solid introduction to the field of Reinforcement Learning and Decision Making. The students will learn about the basic blocks, main approaches, and core challenges of Reinforcement Learning including tabular methods, Finite Markov Decision Processes, Dynamic Programming, Monte Carlo methods, Temporal-Difference learning, policy search, function approximation, exploration, and generalization. Through a combination of lectures, and written and coding assignments, students will become well versed in key ideas and techniques for RL. Assignments will include the basics of reinforcement learning. In addition, students will advance their understanding and the field of RL through a final project.
This class will provide a solid introduction to the field of Reinforcement Learning and Decision Making. The students will learn about the basic blocks, main approaches, and core challenges of Reinforcement Learning including tabular methods, Finite Markov Decision Processes, Dynamic Programming, Monte Carlo methods, Temporal-Difference learning, policy search, function approximation, exploration, and generalization. Through a combination of lectures, and written and coding assignments, students will become well versed in key ideas and techniques for RL. Assignments will include the basics of reinforcement learning. In addition, students will advance their understanding and the field of RL through a final project.
By the end of the class students should be able to:
The only formal prerequisite for this class is COMP1020 - Computing II. However, we expect the following non-official prerequisites:
The official textbook for the course is [1] for which the PDF version is available for free through the authors' website.
[1] Reinforcement Learning: An Introduction, Sutton and Barto, 2nd Edition, 2018.
This course will be offered in Fall 2021.
Contact the instructor: Prof. Reza Ahmadzadeh [reza {at} cs {dot} uml {dot} edu]


Here are some recent personal projects of mine:
- selfhosted-everything - A little home server with everything from file transfer functionality to a live chat!
- pocket - Some tiny design patterns and utilities implemented in the least javascript code possible.
- reactivity - My personal reactivity library, based around a couple observable primitives.


About Me
Hello! My name is Kajal Patel. I born and raise in India. I moved to USA when I was 23 years old. I have graduated from M.S.University of Baroda, India. I studied Bachelor of Science in Food and Nutrition and I have my Master Degree in Medical Technologist. I'm a currently working as Medical Technologist in the Transfusion Medicine Department at Temple University Hospital, Philadelphia, PA. I have been in this field for more than 15 years. I have enjoyed working in this career as well I learn new skills and gain lot of knowledge while working.
I have always want to pursuing this as a career, I enrolled in the Penn Coding Bootcamp Full Stack program. I have always had an interest in software and web development. Earning a full-stack web development certification from PENN LPS coding BootCamp has facilitated the development of strong skills in HTML5, CSS, Javascript, Bootstrap, jQuery and GitHub. I am looking forward to progressing through this class, making connections along the way and seeing where it takes me!