To reorder the levels of a factor based on the values of another variable, see Recipe 15.9.
3.3. Making a Bar Graph of Counts
Your data has one row representing each case, and you want plot counts of the cases.
Use geom_bar() without mapping anything to y (Figure 3-7):
ggplot(diamonds, aes(x=cut)) + geom_bar()
# Equivalent to using geom_bar(stat="bin")
Figure 3-7. Bar graph of counts
The diamonds data set has 53,940 rows, each of which represents information about one
carat       cut color clarity depth table price    x    y    z
     0.23     Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
3.3. Making a Bar Graph of Counts  |  25
Pdf editor with search and replace text - search text inside PDF file in, ASP.NET, MVC, Ajax, WinForms, WPF
Learn how to search text in PDF document and obtain text content and location information
how to select text in pdf reader; pdf text select tool
Pdf editor with search and replace text - VB.NET PDF Text Search Library: search text inside PDF file in, ASP.NET, MVC, Ajax, WinForms, WPF
Learn How to Search Text in PDF Document and Obtain Text Content and Location Information in VB.NET application
how to select all text in pdf file; search pdf files for text programmatically
     0.21   Premium     E     SI1  59.8    61   326 3.89 3.84 2.31
     0.23      Good     E     VS1  56.9    65   327 4.05 4.07 2.31
53939  0.86   Premium     H     SI2  61.0    58  2757 6.15 6.12 3.74
53940  0.75     Ideal     D     SI2  62.2    55  2757 5.83 5.87 3.64
With geom_bar(), the default behavior is to use stat="bin", which counts up the num‐
ber of cases for each group (each x position, in this example). In the graph we can see
that there are about 23,000 cases with an ideal cut.
In this example, the variable on the x-axis is discrete. If we use a continuous variable on
the x-axis, we’ll get a histogram, as shown in Figure 3-8:
ggplot(diamonds, aes(x=carat)) + geom_bar()
Figure 3-8. Bar graph of counts on a continuous axis, also known as a histogram
It  turns out that  in this case,  the  result is the same as if we had used geom_histo
gram() instead of geom_bar().
See Also
If, instead of having ggplot() count up the number of rows in each group, you have a
column in your data frame representing the y values, see Recipe 3.1.
You could also get the same graphical output by calculating the counts before sending
the data to ggplot(). See Recipe 15.17 for more on summarizing data.
For more about histograms, see Recipe 6.1.
26  |  Chapter 3: Bar Graphs
C# PDF replace text Library: replace text in PDF content in
public void Replace(String oldString, String newString, RESearchOption option specified string text that match the search option from specified PDF page.
text searchable pdf; pdf searchable text
VB.NET PDF replace text library: replace text in PDF content in vb
NET: Replace Text in PDF File. The following coding example illustrates how to perform PDF text replacing function in your VB.NET project, according to search
search pdf for text; search pdf documents for text
3.4. Using Colors in a Bar Graph
You want to use different colors for the bars in your graph.
Map the appropriate variable to the fill aesthetic.
We’ll use the uspopchange data set for this example. It contains the percentage change
in population for the US states from 2000 to 2010. We’ll take the top 10 fastest-growing
states and graph their percentage change. We’ll also color the bars by region (Northeast,
South, North Central, or West).
First, we’ll take the top 10 states:
library(gcookbook) # For the data set
upc <- subset(uspopchange, rank(Change)>40)
State Abb Region Change
Arizona  AZ   West   24.6
Colorado  CO   West   16.9
Florida  FL  South   17.6
Georgia  GA  South   18.3
Idaho  ID   West   21.1
Nevada  NV   West   35.1
North Carolina  NC  South   18.5
South Carolina  SC  South   15.3
Texas  TX  South   20.6
Utah  UT   West   23.8
Now we can make the graph, mapping Region to fill (Figure 3-9):
ggplot(upc, aes(x=Abb, y=Change, fill=Region)) + geom_bar(stat="identity")
The  default  colors  aren’t  very  appealing,  so  you  may  want  to  set  them,  using
scale_fill_brewer() or scale_fill_manual(). With this example, we’ll use the latter,
and we’ll set the outline color of the bars to black, with colour="black" (Figure 3-10).
Note that setting occurs outside of aes(), while mapping occurs within aes():
ggplot(upc, aes(x=reorder(Abb, Change), y=Change, fill=Region)) +
geom_bar(stat="identity", colour="black") +
scale_fill_manual(values=c("#669933""#FFCC66")) +
3.4. Using Colors in a Bar Graph  |  27
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
framework class. An advanced PDF editor enable C# users to edit PDF text, image and pages in Visual Studio .NET project. Support to
converting pdf to searchable text format; text searchable pdf
C# PDF delete text Library: delete, remove text from PDF file in
option). Description: Delete specified string text that match the search option from PDF file. Parameters: Name, Description, Valid Value.
find and replace text in pdf file; search text in multiple pdf
Figure 3-9. A variable mapped to fill
Figure 3-10. Graph with different colors, black outlines, and sorted by percentage change
This example also uses the reorder() function, as in this particular case it makes sense
to sort the bars by their height, instead of in alphabetical order.
See Also
For more about using the reorder() function to reorder the levels of a factor based on
the values of another variable, see Recipe 15.9.
For more information about using colors, see Chapter 12.
28  |  Chapter 3: Bar Graphs
C# PDF Page Replace Library: replace PDF pages in, ASP.NET
You can replace an entire PDF page with another PDF page from another PDF file. All information, data on the original page are removed, including text, images
pdf text search tool; cannot select text in pdf
C# PDF Text Highlight Library: add, delete, update PDF text
Description: Highlight specified string text that match the search option from PDF file. Parameters: Name, Description, Valid Value.
search pdf for text in multiple files; how to select text on pdf
3.5. Coloring Negative and Positive Bars Differently
You want to use different colors for negative and positive-valued bars.
We’ll use a subset of the climate data and create a new column called pos, which indi‐
cates whether the value is positive or negative:
library(gcookbook) # For the data set
csub <- subset(climate, Source=="Berkeley" & Year >= 1900)
csub$pos <- csub$Anomaly10y >= 0
Source Year Anomaly1y Anomaly5y Anomaly10y Unc10y
Berkeley 1900        NA        NA     -0.171  0.108 FALSE
Berkeley 1901        NA        NA     -0.162  0.109 FALSE
Berkeley 1902        NA        NA     -0.177  0.108 FALSE
Berkeley 2002        NA        NA      0.856  0.028  TRUE
Berkeley 2003        NA        NA      0.869  0.028  TRUE
Berkeley 2004        NA        NA      0.884  0.029  TRUE
Once we have the data, we can make the graph and map pos to the fill color, as in
Figure 3-11. Notice that we use position="identity" with the bars. This will prevent
a warning message about stacking not being well defined for negative numbers:
ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos)) +
geom_bar(stat="identity", position="identity")
Figure 3-11. Different colors for positive and negative values
3.5. Coloring Negative and Positive Bars Differently  |  29
C# WPF PDF Viewer SDK to view PDF document in C#.NET
WPF Viewer & Editor. WPF: View PDF. WPF: Annotate PDF. Read. Text: Extract Text from PDF. Text: Search Text in PDF. to PDF. Text: Delete Text from PDF. Text: Replace
pdf text searchable; how to select all text in pdf file
C# PDF Convert to Text SDK: Convert PDF to txt files in
PDF to Text. |. C#.NET PDF SDK - Convert PDF to Text in C#.NET. Empower C# Users to Convert PDF to Text (TXT) in Visual C# with .NET XDoc.PDF Converter Library.
search pdf files for text; pdf text select tool
There are a few problems with the first attempt. First, the colors are probably the reverse
of what we want: usually, blue means cold and red means hot. Second, the legend is
redundant and distracting.
We can change the colors with scale_fill_manual() and remove the legend with
guide=FALSE, as shown in Figure 3-12. We’ll also add a thin black outline around each
of the bars by setting colour and specifying size, which is the thickness of the outline,
in millimeters:
ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos)) +
geom_bar(stat="identity", position="identity", colour="black", size=0.25) +
scale_fill_manual(values=c("#CCEEFF""#FFDDDD"), guide=FALSE)
Figure 3-12. Graph with customized colors and no legend
See Also
To change the colors used, see Recipes 12.3 and 12.4.
To hide the legend, see Recipe 10.1.
3.6. Adjusting Bar Width and Spacing
You want to adjust the width of bars and the spacing between them.
To make the bars narrower or wider, set width in geom_bar(). The default value is
0.9; larger  values make the bars  wider, and smaller values make the  bars narrower
(Figure 3-13).
30  |  Chapter 3: Bar Graphs
For example, for standard-width bars:
library(gcookbook) # For the data set
ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity")
For narrower bars:
ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity", width=0.5)
And for wider bars (these have the maximum width of 1):
ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity", width=1)
Figure 3-13. Different bar widths
For grouped bars, the default is to have no space between bars within each group. To
add space between bars within a group, make width smaller and set the value for posi
tion_dodge to be larger than width (Figure 3-14).
For a grouped bar graph with narrow bars:
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(stat="identity", width=0.5, position="dodge")
And with some space between the bars:
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(stat="identity", width=0.5, position=position_dodge(0.7))
The first graph used position="dodge", and the second graph used position=posi
tion_dodge(). This is because position="dodge" is simply shorthand for position=po
sition_dodge() with the default value of 0.9, but when we want to set a specific value,
we need to use the more verbose command.
The default value of width is 0.9, and the default value used for position_dodge() is
the same. To be more precise, the value of width in position_dodge() is the same as
width in geom_bar().
3.6. Adjusting Bar Width and Spacing  |  31
Figure 3-14. Left: bar graph with narrow grouped bars; right: with space between the
All of these will have the same result:
geom_bar(width=0.9, position=position_dodge())
geom_bar(width=0.9, position=position_dodge(width=0.9))
The items on the x-axis have x values of 1, 2, 3, and so on, though you typically don’t
refer to them by these numerical values. When you use geom_bar(width=0.9), it makes
each  group  take  up  a  total  width  of  0.9  on  the  x-axis.  When  you  use posi
tion_dodge(width=0.9), it spaces the bars so that the middle of each bar is right where
it would be if the bar width were 0.9 and the bars were touching. This is illustrated in
Figure 3-15. The two graphs both have the same dodge width of 0.9, but while the top
has a bar width of 0.9, the bottom has a bar width of 0.2. Despite the different bar widths,
the middles of the bars stay aligned.
If you make the entire graph wider or narrower, the bar dimensions will scale propor‐
tionally. To see how this works, you can just resize the window in which the graphs
appear. For information about controlling this when writing to a file, see Chapter 14.
3.7. Making a Stacked Bar Graph
You want to make a stacked bar graph.
Use geom_bar() and map a variable fill. This will put Date on the x-axis and use
Cultivar for the fill color, as shown in Figure 3-16:
library(gcookbook) # For the data set
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
32  |  Chapter 3: Bar Graphs
Figure  3-15. Same  dodge  width  of  0.9,  but  different  bar widths  of  0.9 (top)  and 0.2
Figure 3-16. Stacked bar graph
3.7. Making a Stacked Bar Graph  |  33
To understand how the graph is made, it’s useful to see how the data is structured. There
are three levels of Date and two levels of Cultivar, and for each combination there is a
value for Weight:
Cultivar Date Weight        sd  n         se
c39  d16   3.18 0.9566144 10 0.30250803
c39  d20   2.80 0.2788867 10 0.08819171
c39  d21   2.74 0.9834181 10 0.31098410
c52  d16   2.26 0.4452215 10 0.14079141
c52  d20   3.11 0.7908505 10 0.25008887
c52  d21   1.47 0.2110819 10 0.06674995
One problem with the default output is that the stacking order is the opposite of the
order of items in the legend. As shown in Figure 3-17, you can reverse the order of items
in the legend by using guides() and specifying the aesthetic for which the legend should
be reversed. In this case, it’s the fill aesthetic:
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
Figure 3-17. Stacked bar graph with reversed legend order
If you’d like to reverse the stacking order, as in Figure 3-18, specify order=desc() in the
aesthetic mapping:
libary(plyr) # Needed for desc()
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar, order=desc(Cultivar))) +
34  |  Chapter 3: Bar Graphs
Documents you may be interested
Documents you may be interested