Reputation: 907
Is it possible to make visualization of poker hand range chart in R like this?
I want to show how many times player had certain hand, so there will be numbers with frequency. Little 5 under title AA if player had AA 5x times and so on. It would be great change color of each hand based on frequency.
Upvotes: 3
Views: 11033
Reputation: 1058
EDIT: I've essentially answered the OP.
I just spent a while learning how text and images work in R, still don't understand them all too well, but here's a start to solving your issue.
These posts helped me greatly:
display a matrix, including the values, as a heatmap
Here's a couple of posts that can probably answer your question thoroughly
How to show matrix values on Levelplot
You might be able to draw ideas from the code below, but I stress that you look at the thread above this sentence.
EDIT: code below is probably what you want!
library(lattice)
library(latticeExtra)
x <- c("A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2")
y <- c("2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" )
grid <- expand.grid(X= x, Y= y)
grid$Z <- c(
rep(0, 12), rep(1, 1),
rep(0, 11), rep(1, 1), rep(2, 1),
rep(0, 10), rep(1, 1), rep(2, 2),
rep(0, 9), rep(1, 1), rep(2, 3),
rep(0, 8), rep(1, 1), rep(2, 4),
rep(0, 7), rep(1, 1), rep(2, 5),
rep(0, 6), rep(1, 1), rep(2, 6),
rep(0, 5), rep(1, 1), rep(2, 7),
rep(0, 4), rep(1, 1), rep(2, 8),
rep(0, 3), rep(1, 1), rep(2, 9),
rep(0, 2), rep(1, 1), rep(2, 10),
rep(0, 1), rep(1, 1), rep(2, 11),
rep(3,1), rep(2, 12)
)
levelplot(Z ~ X*Y, data = grid) +
layer(panel.text(X, Y, paste(X, Y)), data = grid)
I will leave it to you to figure out how to choose different colors, and insert the varying text with the "s" and "o" attached.
Attempt using image function
m <- matrix(1:169, ncol=13)
colnames(m) <- paste("Card", 1:13, sep="")
rownames(m) <- paste("Card", 1:13, sep="")
image(1:ncol(m), 1:nrow(m), t(m))
axis(1, 1:ncol(m), colnames(m))
axis(2, 1:nrow(m), rownames(m))
x <- as.data.frame(c("A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2"))
y <- as.data.frame(c("A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2"))
z <- seq(1, 13, 1)
for (i in 1:13)
for (j in 1:13){
text(z[i], z[j], paste(x[i,], y[j,]))
}
Upvotes: 4