理解ggplot2颜色的标尺函数(scale_color_*,scale_color_*)

关于颜色的标尺函数在ggplot2中竟然多达22种,如此多的标尺函数未免使人感到疑惑

library(ggplot2)
grep('scale_color_*', x = ls('package:ggplot2'), value = TRUE)#在这里fill同理

[1] “scale_color_binned” “scale_color_brewer”
[3] “scale_color_continuous” “scale_color_date”
[5] “scale_color_datetime” “scale_color_discrete”
[7] “scale_color_distiller” “scale_color_fermenter”
[9] “scale_color_gradient” “scale_color_gradient2”
[11] “scale_color_gradientn” “scale_color_grey”
[13] “scale_color_hue” “scale_color_identity”
[15] “scale_color_manual” “scale_color_ordinal”
[17] “scale_color_steps” “scale_color_steps2”
[19] “scale_color_stepsn” “scale_color_viridis_b”
[21] “scale_color_viridis_c” “scale_color_viridis_d”

对颜色标尺函数的理解

让我们直入正题,虽然ggplot2拥有多达22种的标尺函数,但我们可以根据关键性质(一共分为三种),这样我们可以大体知道在不同的情形下具体使用哪个标尺函数。

  1. 数据映射的自然属性:
    aes()图形映射里描述的数据是连续的还是离散的?连续的典型如时间,温度,长度,离散的典型如分类结果ABCD。
  2. 颜色空间:
    简单来说就是你在画图内使用的调色板,在默认情况下ggplot2已经给你设置了调色板,此外ggplot2还内置了RcolorBrewer调色板以及Viridis调色板
  3. 层级的控制:
    一旦指定映射数据是否离散,规定颜色空间之后,用户就需要在颜色的层级上描述差异,例如*_continuous()*_gradient
date; // 缴费日期 double amount; // 缴费金额 Payment(string n="", string d="", double a=0.0): name(n), date(d), amount(a) {} }; class PaymentManager { private: vector<Payment> payments;`scale_factor` 是像素与实际长度之间的比例因子,需要通过测量标尺的长度来计 // 缴费信息 public: // 添加缴费信息 void AddPayment(string n, string d, double a) { 算。可以按照以下步骤获取 `scale_factor`: 1. 读入含有标尺的图像并显示。 payments.push_back(Payment(n, d, a)); } // 获取缴费信息 Payment GetPayment(int i) { ```matlab img = imread('image_with_scale.png'); imshow(img); ``` 2. 在图像上使用 `imdistline return payments[i]; } // 获取缴费数量 int Count() { return payments.size(); } //` 函数绘制一个距离标尺,然后使用 `wait` 函数等待用户在图像上选择两个点来 修改缴费信息 void ModifyPayment(int i, string d, double a) { payments[i].date = d; payments设置标尺的长度。 ```matlab h = imdistline(gca); api = iptgetapi(h); api.setLabelTextFormatter('%[i].amount = a; } // 查询缴费信息 vector<Payment> QueryPayment(string n) { vector<d um'); wait(h); ``` 3. 获取标尺的长度,并计算出图像中每个像素的实际Payment> result; for (int i = 0; i < payments.size(); i++) { if (payments[i].name ==长度。 ```matlab distance = api.getDistance(); scale_factor = distance / 100; % 假设标尺长度为100像 n) { result.push_back(payments[i]); } } return result; } // 统计已交素 ``` 在这个例子中,我们假设标尺的长度为100像素,然后将标尺的和欠费用户 void Statistic(double deadline) { // 统计已交用户 vector<string> paid; 长度除以100得到每个像素的实际长度,从而得到了 `scale_factor`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值