如何在同一包装上组合条形图

问题描述

我需要在同一包装上显示每个Numa节点的内存和CPU使用情况,因此架构是可见的。像这样:

result example

这是我的代码:

library(tidyr)
library(ggplot2)

numa.nodes <- tibble (
  numa_name = c("numa_01","numa_01","numa_02","numa_02"),counter_name =c("cpu01","cpu02","cpu03","cpu04","memory_used","memory_total","cpu01","memory_total"),value = c(sample(0:100,4),sample(0:32,1),32,sample(0:100,sample(0:128,128)
)

numa.nodes <- numa.nodes %>% add_row(
  numa_name = c("numa_03","numa_03","numa_04","numa_04"),128)
  )


numa.nodes <- numa.nodes %>% mutate(counter_name=factor(counter_name,levels = unique(counter_name),ordered = T))

print(numa.nodes)


cpu_p <- numa.nodes %>% filter(counter_name != c("memory_used","memory_total")) %>% 
ggplot() +
  aes(x = counter_name,y = value,label = value) +
  geom_bar(stat = 'identity',fill = "#00AFBB",color='black') +
  geom_bar(stat = 'identity',aes(y=100),alpha=0.2,fill='white',color='black') +
  facet_wrap(vars(numa_name),strip.position = 'bottom',scales = "free_x")+
  geom_text(size = 3,position = position_stack(vjust = 0.5)) +
  theme_bw()+
  theme(strip.placement = 'outside',strip.background = element_blank(),legend.position = 'none',axis.text = element_text(color='black',face='bold'),axis.title = element_text(color='black',legend.text = element_text(color='black',legend.title = element_text(color='black',strip.text = element_text(color='black',face='bold')) +
        labs(x='CPU',y="Usage %") 



mem_p <- numa.nodes %>% filter(counter_name == c("memory_used","memory_total")) %>%
  pivot_wider(names_from = counter_name,values_from=value) %>%
  ggplot(aes(x=numa_name,y=memory_total)) +
  geom_bar(stat = 'identity',aes(fill='memory_total'),color='black')+
  geom_bar(stat = 'identity',aes(y=memory_used,fill='memory_used'),scales = "free_x")+
  theme_bw()+
  geom_text(aes(y=memory_total,label=memory_total),size = 3) +
  geom_text(aes(y=memory_used,label=memory_used),position = position_stack(vjust = 0.5),size=3)+
  theme(strip.placement = 'outside',legend.position = 'top',axis.text.x = element_blank(),axis.ticks.x = element_blank()) +
  labs(x='Memory',y="Usage %")+
  labs(fill='Counter')

library("ggpubr")

ggarrange (cpu_p,mem_p)

my result

不幸的是,我的代码有两个问题。

  1. 我的结果画-不是每个节点的CPU和内存在一起。我需要以某种方式组合内存+ CPU。
  2. 我在看起来非常相似的图表上处理大量数据很奇怪。

问题是:

  • CPU的数量可能是1-8,如果我对CPU使用数据透视,则某些numa节点将不适用,
  • CPU的比例为100%,我使用y = 100来显示比例,内存的比例为总内存(已使用的内存在总内存上分层),
  • 我不能使用抵押,也不能将计数器从左到右放置-内存和cpu数据似乎以不同的方式处理。

是否可以将每个Numa节点的CPU和内存显示在彼此附近?还有使用“高”或“宽”数据的方式,不是两者都使用吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)