person.side | R Documentation |
Draw the person side of a Wright Map in a variety of styles. Intended to be primarily called by wrightMap
, but also available for use on their own.
personHist(thetas, yRange = NULL, breaks = "FD", dim.lab.cex = 0.6, dim.lab.side = 3
, dim.lab.adj = 0.5, dim.names = NULL, dim.color = "white", person.points = NULL
, person.range = NULL, p.point.col = "gray45", p.range.col = "gray75"
, axis.persons = "Respondents", show.axis.persons = FALSE
, axis.persons.par = list(), oma = c(0, 5, 0, 5), axis.logits = "Logits"
, show.axis.logits = TRUE,...)
personDens(thetas, yRange = NULL, dim.lab.cex = 0.6, dim.lab.side = 3, dim.lab.adj = 0.5
,dim.names = NULL,dim.color = "black",person.points = NULL, person.range = NULL
, p.point.col = "black", p.range.col = "gray70", oma = c(0, 5, 0, 5)
, axis.logits = "Logits", show.axis.logits = TRUE
, axis.persons = "Respondents",...)
thetas |
vector or matrix of person parameters. If a matrix, persons should be the rows and dimensions the columns. |
yRange |
vector with 2 elements specifying the lower and upper limits of the plot's y-axis. |
dim.lab.cex |
An integer specifying the amount the dimension labels should be magnified relative to the default. |
dim.lab.side |
An integer specifying which side to plot the dimension names. Values of 1, 2, 3 (default), and 4, respectively, indicate positions below, to the left of, above, and to the right of the person distributions. |
dim.lab.adj |
A numerical value adjusting the position of the dimension names. |
dim.names |
A string or a vector of strings containing the names of each dimension. |
dim.color |
A numerical value or vector indicating the colors to be used for representing each dimension. |
person.points |
A vector of individual values to highlight. |
person.range |
A pair of values, an even-length vector, or a matrix with two rows. Values indicate the start and endpoints of ranges to highlight. If a matrix, the first row should be lower bounds and the second row upper bounds of the ranges. If a vector, the values should alternate: (lower1, upper1, lower2, upper2, ...). |
p.point.col |
A string or vector of strings indicating the color to use for the highlighted points. |
p.range.col |
A string or vector of strings indicating the color to use for the highlighted ranges. |
axis.persons |
The title of the y-axis on the left side. |
show.axis.persons |
Logical indicating whether to show the persons axis on the left side. Default is |
axis.persons.par |
A list of parameters to customize the appearance of the persons axis. This can include options such as |
oma |
Values to use for the |
show.axis.logits |
Logical indicating whether to show the logit axis. |
axis.logits |
The title of the y-axis on the right side. |
... |
Additional arguments passed to other methods (e.g., |
For personHist
:
breaks |
A parameter passed to the |
These functions are designed as helper functions for wrightMap
and ppPlot
to draw the person side of a map. When called outside of those functions, they can be used to create more customized maps. Possible uses include:
Drawing a person map on its own
Comparing two person maps in a single figure
Drawing a Wright Map with the item side on the left and the person side on the right
The personHist
style, the default, draws the person distribution as a histogram. The personDens
style draws a density plot.
The person.points
, person.range
, p.point.col
, and p.range.col
parameters can highlight specific values or ranges, either when called directly or via ppPlot
.
Rebecca Freund and David Torres Irribarra
item.side
personData
wrightMap
ppPlot
# Creating a Wright Map with item side on the left
multi.proficiency <- data.frame(
d1 = rnorm(1000, mean = -0.5, sd = 1),
d2 = rnorm(1000, mean = 0.0, sd = 1),
d3 = rnorm(1000, mean = +0.5, sd = 1))
items.loc <- sort( rnorm( 20))
thresholds <- data.frame(
l1 = items.loc - 0.5 ,
l2 = items.loc - 0.25,
l3 = items.loc + 0.25,
l4 = items.loc + 0.5)
# split.screen: Set up a split screen with the left side 80 percent of the screen
# yRange = c(-3,4): Set the yRange to be the same for both sides
# axis.logits.side = "L": Move the item logit axis to the left
# oma = c(0,0,0,2): Adjust the spacing between the graphs
# mtext("Wright Map", side = 3, font = 2, line = 1): add a title
# screen(2): Start drawing on the second screen
split.screen(figs = matrix(c(0,.8,0,1,.8,1,0,1),ncol = 4, byrow = TRUE))
itemModern(thresholds, yRange = c(-3,4), show.axis.logits = "L", oma = c(0,0,0,2))
mtext("Wright Map", side = 3, font = 2, line = 1)
screen(2)
personHist(multi.proficiency, axis.persons = "", yRange = c(-3,4)
, axis.logits = "Persons", show.axis.logits = FALSE)
## Creating a multidimensional Wright Map with each dimension separate
## Mock results
d1 = rnorm(1000, mean = -0.5, sd = 1)
d2 = rnorm(1000, mean = 0.0, sd = 1)
dim1.diff <- rnorm(5)
dim2.diff <- rnorm(5)
split.screen(figs = matrix(c(0,.1,0,1, .12,.6,0,1, .5,.6,0,1, .5,1,0,1)
,ncol = 4,byrow = TRUE))
personDens(d1, yRange = c(-3,3), show.axis.logits = FALSE, axis.logits = "")
screen(2)
itemModern(dim1.diff, yRange = c(-3,3), show.axis.logits = FALSE)
mtext("Wright Map", side = 3, font = 2, line = 1)
screen(3)
personDens(d2, yRange = c(-3,3), show.axis.logits = FALSE
, axis.logits = "", axis.persons = "", dim.names = "Dim2")
screen(4)
itemModern(dim2.diff, yRange = c(-3,3), show.axis.logits = FALSE
, label.items = paste("Item", 6:10))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.