ggplot2 | 如何把高亮的点画到最顶层?

这篇博客展示了如何使用ggplot2在钻石数据中,首先创建一个包含'cut'为'Ideal'的点的红色图层,然后添加图例,并将高亮部分与其他灰色点分开。通过gplot和patchwork库,作者详细解释了如何实现这一过程。

思路:就是先用ggplot2正常画一遍。然后把要高亮的点拿出来再画一层。

library(ggplot2)

# 比如:高亮显示 cut 为 Ideal 的点的 克拉*价格
df1=diamonds
df1$good=factor(df1$cut=="Ideal", levels=c(T, F) )

g1=ggplot(df1, aes(carat, price, color=good))+
  geom_point(size=2)+
  theme_bw()+
  scale_color_manual(values=c("red", "grey"))+ggtitle("Fig1");
g1

# 把要高亮的点拿出来,再画一层
df2=df1[which(df1$good==T), ]
g2=ggplot()+
  geom_point(data=df1, mapping=aes(carat, price), size=2, color="grey")+
  geom_point(data=df2, mapping=aes(carat, price), size=2, color="red")+
  theme_bw()+ggtitle("Fig2")
library(patchwork)
g1+g2

在这里插入图片描述

怎么加上图例?

g3=g1+geom_point(data=df2, mapping=aes(carat, price), size=2, color="red")+ggtitle("Fig3"); 
g3

在这里插入图片描述

== end ==

在 MiniGUI 中,**关闭最顶层的对话框**(即当前正在显示的模态对话框)通常涉及调用 MiniGUI 提供的对话框管理函数。MiniGUI 的模态对话框是通过 `DialogBoxIndirectParam` 或 `DialogBox` 等函数创建的,它们会启动一个嵌套的消息循环,直到对话框关闭为止。 --- ### ✅ 关闭最顶层对话框的方法 #### 方法一:使用 `EndDialog` 函数(推荐) 如果你正在处理对话框内的某个事件(如按钮击),可以直接调用 `EndDialog` 来关闭当前对话框: ```c EndDialog(hwnd, wParam); ``` - `hwnd` 是对话框的窗口句柄; - `wParam` 是返回值,通常用于标识用户击了哪个按钮(如 `IDOK`、`IDCANCEL`)。 ##### 示例: ```c case IDCLOSEBTN: EndDialog(hwnd, IDCANCEL); break; ``` 这将关闭当前对话框,并返回控制权给调用 `DialogBoxIndirectParam` 的函数。 --- #### 方法二:通过父窗口发送消息关闭 如果你在对话框外部(例如主窗口中)想要主动关闭对话框,可以保存对话框的句柄,并通过 `SendMessage` 发送关闭消息。 ##### 示例: ```c // 假设 dlg_hwnd 是你保存的对话框句柄 SendMessage(dlg_hwnd, MSG_CLOSE, 0, 0); ``` 这将触发对话框的关闭流程,如果对话框是模态的,还会退出其消息循环。 --- #### 方法三:关闭最顶层窗口(适用于非模态对话框) 如果你不确定哪个是当前最顶层对话框,但想关闭最顶层窗口,可以使用: ```c HWND hwndTop = GetActiveWindow(); if (hwndTop) DestroyMainWindow(hwndTop); ``` > ⚠️ 注意:此方法适用于非模态窗口,模态对话框建议使用 `EndDialog`。 --- ### ✅ 总结 | 场景 | 方法 | 推荐度 | |------|------|--------| | 在对话框内部响应事件关闭 | `EndDialog(hwnd, result)` | ⭐⭐⭐⭐⭐ | | 外部主动关闭对话框 | `SendMessage(dlg_hwnd, MSG_CLOSE, 0, 0)` | ⭐⭐⭐⭐ | | 关闭最顶层窗口(不确定是否是对话框) | `DestroyMainWindow(GetActiveWindow())` | ⭐⭐ | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值