Generates 2D visualization of high-dimensional data using either t-SNE or UMAP dimensionality reduction, with options for cluster labeling and aesthetic customization.
Usage
DrawCluster(
  data,
  label = NULL,
  point_size = 1,
  method = c("tsne", "umap"),
  draw_cluster_text = TRUE,
  calculated = TRUE,
  pca = TRUE,
  perplexity = 100,
  plot = TRUE,
  seed = 1
)Arguments
- data
- Input data matrix (features x samples) or pre-computed coordinates if calculated=FALSE 
- label
- Vector of cluster labels for each sample (optional) 
- point_size
- Size of points in the plot (default: 1) 
- method
- Dimensionality reduction method: "tsne" or "umap" (default: "tsne") 
- draw_cluster_text
- Whether to display cluster labels at median positions (default: TRUE) 
- calculated
- Whether to compute dimensionality reduction (TRUE) or use provided coordinates (FALSE)) (default: TRUE) 
- pca
- Whether to perform PCA preprocessing for t-SNE (default: TRUE) 
- perplexity
- t-SNE perplexity parameter (default: 100) 
- plot
- Whether to display the plot (default: TRUE) 
- seed
- Random seed for reproducibility (default: 1) 
Value
A list containing:
- p: ggplot2 object of the visualization 
- x: Data frame with coordinates (V1 and V2 columns) 
- cell_group: Factor vector of cluster labels 
Details
Key features:
- Supports both t-SNE (t-Distributed Stochastic Neighbor Embedding) and UMAP (Uniform Manifold Approximation and Projection) 
- Option to use pre-computed coordinates or calculate new embeddings 
- Automatic cluster labeling at median positions 
- Customizable plotting parameters and reproducible results via seed setting 
The function returns both the plot object and the coordinates for further analysis.
Examples
if (FALSE) { # \dontrun{
# Using example data from scLearn package
data(QueryCellData)
# Get normalized expression matrix
norm_expr <- logcounts(QueryCellData)
cell_types <- colData(QueryCellData)$cell_type1
# t-SNE visualization
tsne_res <- DrawCluster(
  data = norm_expr,
  label = cell_types,
  method = "tsne",
  perplexity = 30,
  point_size = 1.5
)
# UMAP visualization without cluster labels
umap_res <- DrawCluster(
  data = norm_expr,
  label = cell_types,
  method = "umap",
  draw_cluster_text = FALSE,
  point_size = 2
)
# Using pre-computed coordinates
precomputed_coords <- data.frame(V1 = rnorm(ncol(norm_expr)),
                               V2 = rnorm(ncol(norm_expr)))
DrawCluster(
  data = precomputed_coords,
  label = cell_types,
  calculated = FALSE
)
} # }