r - 如何为 barplot3d 函数中的行分配颜色
问题描述
我曾经barplot3d::barplot3d
可视化我的数据。我一直在尝试为每一行分配一种颜色而不是使用topcolors = rainbow(100)
,但我无法弄清楚。我感谢任何帮助、建议或参考。
这是我拥有的代码:
barplot3d(rows = 4,
cols = 29,
z = ECdata$EC50,
scalexy = 0.5,
alpha = 0.2,
theta = 50,
phi = 50,
topcolors = rainbow(100),
xlabels = 1:29,
ylabels = c("Adepidyn", "Boscolid", "Fluopyram", "Solateno"),
xsub = "Isolate",
ysub = "Fungicide",
zsub = "EC50")
解决方案
回答
只需将每列重复一次cols
,列数在哪里cols
:
rows <- 4
cols <- 5
my_colors <- rep(rainbow(rows), each = cols)
barplot3d(rows = rows,
cols = cols,
z = runif(rows * cols),
topcolors = my_colors)
基本原理
使用rainbow(100)
,您可以获得 100 种颜色的颜色代码。我们希望每行的颜色代码相同。因此,每个颜色代码应该重复我们有多少列。
假设我们想要 5 列。让我们将其存储为:
cols <- 5
现在,我们可以将每个颜色代码重复 5 次:
my_colors <- rep(rainbow(100), each = cols))
head(my_colors, 20)
# [1] "#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF" "#80FF00FF" "#80FF00FF" "#80FF00FF" "#80FF00FF" "#80FF00FF" "#00FFFFFF" "#00FFFFFF"
# [13] "#00FFFFFF" "#00FFFFFF" "#00FFFFFF" "#8000FFFF" "#8000FFFF" "#8000FFFF" "#8000FFFF" "#8000FFFF"
但是,如果我们只有 4 行,那么您的所有颜色都barplot3d
将是红色的,因为我们只获得 100 种颜色中的前 4 种颜色:
因此,我们可以只调用rainbow
行数,以获得更多不同的颜色:
my_colors <- rep(rainbow(rows), each = cols)
推荐阅读
- python-3.x - 如何用列表中的“无”替换不存在的元素[PYTHON]
- linkedin - 是否可以将 AutoFill Linkedin 集成到 elementor 表单中?
- ios - SocketRocket IOS Swift 无法重新打开它正在崩溃的套接字
- android-recyclerview - 水平 recyclerView 中的项目比垂直 recyclerView 显示不正确
- python - 给定一个句子,返回一个单词颠倒的句子
- java - 如何轻松地从 Intellij 制作 jar 文件并正确运行?
- python - 尝试使用 BeautifulSoup 写入时出现文件模式错误
- amazon-web-services - 无法连接到 Amazon EC2 实例上的自定义端口
- javascript - 从项目中删除文件时包裹捆绑器“ENOENT:没有这样的文件或目录”
- azure - ML.NET 与 Azure ML Studio