R语言 圆形柱状图和自定义
在这篇文章中,我们将看到如何在R编程语言中创建圆形柱状图和自定义。
圆形柱状图与柱状图相似,但它使用极坐标,而不是笛卡尔坐标。圆形柱状图是指柱状图以圆形而非直线的方式呈现。本文将向你展示如何使用R和ggplot2创建这种图。它包含可重复的代码,并解释了如何使用coord_polar()方法。
定义数据
为了在barplot中使用数据集,我们需要创建数据集,所以这里我们将创建数据集。
# Libraries
library(tidyverse) # help you to prepare the data
library(ggplot2) # help you to prepare the plots
# prepare dataset
data = data.frame(
# add a parameter with a range list 1-100
index = seq(1,100),
# create labelled parameter
label = paste( data ="Data ",
seq(1,100),
sep="= "),
# random values in the range 1 - 100
values = sample( seq(10,100), 100, replace = T)
)
# top five values of the dataframe
head(data)
输出
index label values
1 1 Data -1 28
2 2 Data -2 46
3 3 Data -3 54
4 4 Data -4 25
5 5 Data -5 43
6 6 Data -6 26
例子1:基本圆形条形图
coord_polar()方法用于在特定的协调下创建绘图。
语法: coord_polar(theta = “x”, start = 0, direction = 1, clip = “on”)
参数
- theta: 要映射角度的变量(x或y
- start: 起点与12点的偏移,单位是弧度。根据方向的值,顺时针或逆时针地应用偏移。
- **direction ** :1,顺时针;-1,逆时针。
- clip : 绘图是否应该被剪切到绘图面板的范围内?设置为 “on”(默认)表示是,设置为 “off “表示不是。详情请见 coord_cartesian()。
# Make the plot
p <- ggplot(data, aes(x = as.factor(index), # x-axis factor label
# y-axis numerical parameter
y = values)) +
# the bar height will represent
# the actual value of the data
geom_bar(stat = "identity",
fill=alpha("green", 0.5)) + # define bar color
# define size of inner circle
# and the size of the bar
ylim(-100,120) +
# define the polar coordinate
coord_polar(start = 0)
# plot
p
输出
例2:给数据添加标签
要向其中添加标签和数据,将使用geom_text()方法。
# Adding labels to the plot
data_with_labels = data
# number of labels required
number_of_label <- nrow(data_with_labels)
# find the angle of rotation of the label
angle <- 90 - 360 * (data_with_labelsindex - 0.5) /number_of_label
# check the label alignment - right or left
data_with_labelshjust<-ifelse( angle < -90, 1, 0)
# check the label angle
data_with_labelsangle<-ifelse(angle<-90,
angle + 180, angle)
# Make the plot
# x-axis factor label
p <- ggplot(data, aes(x = as.factor(index),
# y-axis numerical parameter
y = values)) +
# the bar height will represent
# the actual value of the data
geom_bar(stat = "identity",
# define bar color
fill=alpha("green", 0.5)) +
# define size of inner circle
# and the size of the bar
ylim(-100,120) +
# define the polar coordinate
coord_polar(start = 0) +
# add labels
geom_text(data = data_with_labels,
aes(x = index, y = values+10,
# label alignment
label = label, hjust=hjust),
color = "black", fontface="bold",
alpha = 0.6, size = 2.5,
angle = data_with_labelsangle,
inherit.aes = FALSE )
p
输出