Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何绘制具有给定范围的公式?

如何绘制具有给定范围的公式?
EN

Stack Overflow用户
提问于 2018-05-30 11:54:09
回答 1查看 123关注 0票数 1

我希望绘制以下内容:

代码语言:javascript
运行
AI代码解释
复制
L<-((2*pi*h*c^2)/l^5)*((1/(exp((h*c)/(l*k*T)-1))))

l之外的所有变量都是常量:

代码语言:javascript
运行
AI代码解释
复制
T<-6000
h<-6.626070040*10^-34
c<-2.99792458*10^8
k<-1.38064852*10^-23

l的范围从20*10^-92000*10^-9

我已经尝试过l<-seq(20*10^-9,2000*10^-9,by=1*10^-9),但是这并没有给我带来我所期望的结果。

在R中有没有一个简单的解决方案,或者我必须在另一种语言中尝试?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-05-30 17:21:06

看一看spectral radiance equation维基百科的页面,你的公式似乎有点离谱。您的公式将一个额外的pi相乘(不确定是否需要),并且-1位于exp内部而不是外部:

代码语言:javascript
运行
AI代码解释
复制
L <- ((2*pi*h*c^2)/l^5)*((1/(exp((h*c)/(l*k*T)-1))))

下面是修正后的公式。另请注意,我已将其转换为带参数l的函数,因为这是一个变量:

代码语言:javascript
运行
AI代码解释
复制
T <- 6000                # Absolute temperature
h <- 6.626070040*10^-34  # Plank's constant
c <- 2.99792458*10^8     # Speed of light in the medium
k <- 1.38064852*10^-23   # Boltzmann constant

L <- function(l){((2*h*c^2)/l^5)*((1/(exp((h*c)/(l*k*T))-1)))}

# Plotting
plot(L, xlim = c(20*10^-9,2000*10^-9),
     xlab = "Wavelength (nm)",
     ylab = bquote("Spectral Radiance" ~(KW*sr^-1*m^-2*nm^-1)),
     main = "Plank's Law",
     xaxt = "n", yaxt = "n")
xtick <- seq(20*10^-9, 2000*10^-9,by=220*10^-9)
ytick <- seq(0, 4*10^13,by=5*10^12)
axis(side=1, at=xtick, labels = (1*10^9)*seq(20*10^-9,2000*10^-9,by=220*10^-9))
axis(side=2, at=ytick, labels = (1*10^-12)*seq(0, 4*10^13,by=5*10^12))

上面的情况还不错,但我认为使用ggplot2可以做得更好

代码语言:javascript
运行
AI代码解释
复制
h <- 6.626070040*10^-34  # Plank's constant
c <- 2.99792458*10^8     # Speed of light in the medium
k <- 1.38064852*10^-23   # Boltzmann constant

L2 <- function(l, T){((2*h*c^2)/l^5)*((1/(exp((h*c)/(l*k*T))-1)))} # Plank's Law
classical_L <- function(l, T){(2*c*k*T)/l^4} # Rayleigh-Jeans Law

library(ggplot2)
ggplot(data.frame(l = c(20*10^-9,2000*10^-9)), aes(l)) +
  geom_rect(aes(xmin=390*10^-9, xmax=700*10^-9, ymin=0, ymax=Inf), 
            alpha = 0.3, fill = "lightblue") +
  stat_function(fun=L2, color = "red", size = 1, args = list(T = 3000)) +
  stat_function(fun=L2, color = "green", size = 1, args = list(T = 4000)) +
  stat_function(fun=L2, color = "blue", size = 1, args = list(T = 5000)) +
  stat_function(fun=L2, color = "purple", size = 1, args = list(T = 6000)) +
  stat_function(fun=classical_L, color = "black", size = 1, args = list(T = 5000)) +
  theme_bw() +
  scale_x_continuous(breaks = seq(20*10^-9, 2000*10^-9,by=220*10^-9),
                     labels = (1*10^9)*seq(20*10^-9,2000*10^-9,by=220*10^-9),
                     sec.axis = dup_axis(labels = (1*10^6)*seq(20*10^-9,2000*10^-9,by=220*10^-9),
                                         name = "Wavelength (\U003BCm)")) +
  scale_y_continuous(breaks = seq(0, 4*10^13,by=5*10^12),
                     labels = (1*10^-12)*seq(0, 4*10^13,by=5*10^12),
                     limits = c(0, 3.5*10^13)) +
  labs(title = "Black Body Radiation described by Plank's Law", 
       x = "Wavelength (nm)",
       y = expression("Spectral Radiance" ~(kWsr^-1*m^-2*nm^-1)),
       caption = expression(''^'\U02020' ~'Spectral Radiance described by Rayleigh-Jeans Law, which demonstrates the ultraviolet catastrophe.')) +
  annotate("text", 
           x = c(640*10^-9, 640*10^-9, 640*10^-9, 640*10^-9, 
                 150*10^-9, (((700-390)/2)+390)*10^-9, 1340*10^-9), 
           y = c(2*10^12, 5*10^12, 14*10^12, 31*10^12, 
                 35*10^12, 35*10^12, 35*10^12), 
           label = c("3000 K", "4000 K", "5000 K", "6000 K", 
                    "UV", "VISIBLE", "INFRARED"),
           color = c(rep("black", 4), "purple", "blue", "red"),
           alpha = c(rep(1, 4), rep(0.6, 3)),
           size = 4.5) +
  annotate("text", x = 1350*10^-9, y = 23*10^12, 
           label = deparse(bquote("Classical theory (5000 K)"^"\U02020")),
           color = "black", parse = TRUE)

备注:

我还通过将绝对温度设置为L2 T a variable

  • 来创建函数。对于每个T,我使用不同的颜色绘制函数L2。我还添加了一个classical_L函数来演示经典的光谱理论radiance

  • geom_rect为“可见”的光波长创建浅蓝色阴影区域range

  • scale_x_continuous设置x轴的断点,而labels设置轴刻度标签。请注意,我已经将seq乘以(1*10^9)以将单位转换为纳米(nm)。添加第二个x轴以显示千分尺scale

  • Analogously,scale_y_continuous设置y轴的折断和记号标签。这里我乘以(1*10^-12)(1*10^(-3-9)),将瓦特(W)转换为千瓦(kW),并从反米(m^-1)转换为反纳米(nm^-1)

  • bquote在y轴上正确显示上标label

  • annotate设置曲线标签的坐标和文本。我还添加了"UV","VISIBLE“和”“光波波长的标签

ggplot2

来自维基百科的图:

图片来源:https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Black_body.svg/600px-Black_body.svg.png

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50604013

复制
相关文章
执行start()的顺序不代表线程执行的顺序
执行start()的顺序不代表线程执行的顺序 import org.omg.CORBA.PUBLIC_MEMBER; /** * Created by wuyupku on 2019-04-12 12:24 * * @Beijing CHINA */ public class Demo01 { public static void main(String[] args) { mythread thread1 = new mythread(1); mythrea
葆宁
2019/04/18
2.7K0
执行start()的顺序不代表线程执行的顺序
PageHelper在SpringBoot的@PostConstruct中不生效
在使用PageHelper的过程中,出现了一个很奇怪的问题,假设在数据库中存放有30条Country记录,我们用下面的方法使用PageHelper进行分页查询,那么我们希望得到的page.size是10。
翎野君
2023/05/12
1.1K0
成员以其在类中声明的顺序构造
分析以下代码的输出: #include<iostream> using namespace std; class A { public: A(int j):age(j) , num(age + 1) { cout<<"age:"<<age<<",num:"<<num<<endl; } protected: int num; int age; }; void main() { A sa(15); }  运行结果:age:15 , num:2(num为一个随机数) 由于按成员在类定义中的声明
猿人谷
2018/01/17
1.6K0
如何赢得别人的尊重
《人性的弱点》读书笔记-2 13,要想自己开心,先要让别人开心 先不要问为什么不是别人先让我开心,而是我要先去尽力取悦别人。 14,不要去批评别人来得到自身的满足 经常看到有一些人,因为嫉妒别人比他强,所以会毁谤别人,说一些不好听的话,在他背后来诋毁他,我们不要这样做,我觉得这是一种非常无能,而且没有任何意义的事情,不但自己不会有所提升,还会让别人觉得我们很low。 15,不要被批评之剑中伤 当你做一件事情的时候就努力去做,做完之后也不要管任何人对你的恶意的评价。 16,学会自我批评 富兰克林每天都会反省一
杨熹
2018/04/02
8500
在seaborn中设置和选择颜色梯度
seaborn在matplotlib的基础上进行开发,当然也继承了matplotlib的颜色梯度设置, 同时也自定义了一系列独特的颜色梯度。在seaborn中,通过color_palette函数来设置颜色, 用法如下
生信修炼手册
2020/11/02
4K0
在seaborn中设置和选择颜色梯度
为啥await在forEach中不生效?
前两天要写循环遍历请求接口,于是就在forEach中用到了await,但是根本不是我想要的啊!
用户3258338
2019/10/29
2.6K0
顺序OleDbCommand命名参数,你了解不?
接触到一个老的项目,里面大量使用OleDbConnection进行数据库操作,在执行SQL块语句时,对它的顺序参数、命名参数很不了解。据说不能使用命名参数,但我这里试验了一下,好像是可以的,只是对参数的顺序还是有要求。看看你能知道下面的输出结果吗?
全栈程序员站长
2022/08/31
4340
为什么不建议在 Docker 中跑 MySQL?
—1— 前言 容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以:数据库 MySQL 是否需要容器化? 认真分析大家的各种观点,发现赞同者仅仅是从容器优势的角度来阐述 MySQL 需要容器化,几乎没有什么业务场景进行验证自己的观点;反过来再看反对者,他们从性能、数据安全等多个因素进行阐述 MySQL不需要容器化,也举证了一些不适合的业务场景。下
玄姐谈AGI
2022/03/03
3.7K0
volatile禁止指令重排的原理_警告禁止指令提示颜色顺序
你写的程序,计算机并不是按照你写的那样去执行的。 源代码 -> 编译器优化的重排 -> 指令并行可能会重排 -> 内存系统可能会重排 -> 执行
全栈程序员站长
2022/11/02
3030
pycharm的背景颜色设置_css中设置背景颜色
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/174387.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
7.5K0
pycharm的背景颜色设置_css中设置背景颜色
【Qt】使用QPalette设置QPlainTextEdit颜色时,不生效
最近在看《Qt5.9 C++开发指南》这本书,这本书可以从异步社区上下载源代码,不过需要注册有点麻烦:
ccf19881030
2021/01/20
2.7K0
为什么不建议在 Docker 中跑 MySQL?
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/04
4.3K0
input框取消光标颜色手机端不生效
<style> input{ color:transparent; } </style> <input value="我要隐藏光标"> //文字颜色可以使用text-shadow属性 <style> input{ color:transparent; text-shadow:0 0 0 red; } </style> PC端没问题,但是手机端测试无效。 参考链接:http://blog.csdn.net/u010730897/article/details/72721960 这里我用div模拟一个
蓓蕾心晴
2018/04/12
1.4K0
input框取消光标颜色手机端不生效
「Python实用秘技07」在pandas中实现自然顺序排序
  这是我的系列文章「Python实用秘技」的第7期,本系列立足于笔者日常工作中使用Python积累的心得体会,每一期为大家带来一个几分钟内就可学会的简单小技巧。
Feffery
2022/05/09
1.2K0
「Python实用秘技07」在pandas中实现自然顺序排序
css样式中的颜色格式
颜色对于 css 来说是非常重要的,网站之所以会呈现出五彩斑斓的样式,就是这些颜色样式起的作用。在 css 中,对于颜色样式有很多种表达方式,今天我们就来盘点下 css 中颜色的格式。
程序那些事儿
2023/03/07
2.3K0
css样式中的颜色格式
极限编程核心价值:尊重(Respect)
尊重(Respect)是极限编程(Extreme Programming,XP)的核心价值之一。
张高兴
2018/08/03
4420
请尊重别人的劳动成果
我已经很多次看到别人转载我的文章但是没有标注出处的,但起码有转载类似的字样,但下面这位貌似有点过份了:
IT晴天
2019/03/06
6150
dotnet 在 WPF 里显示数学 π 的颜色
有逗比小伙伴问我,数学的 π 视觉效果是啥。于是我就来写一个逗比的应用将 π 的颜色在 WPF 应用画出来。原理就是读取 π 的小数点后的数值,然后使用逗比算法转换为 RGB 颜色像素,接着将这些像素转换为一张图片
林德熙
2021/08/31
7990
dotnet 在 WPF 里显示数学 π 的颜色
Python中的顺序表介绍
在 Python 中,列表是一种基本的数据类型,列表的数据组成了一个序列,序列里的数据是有序的(索引),可以快速地找到指定的数据。
Python碎片公众号
2021/02/26
1.4K0
Python中的顺序表介绍
点击加载更多

相似问题

scale_fill_manual不尊重价值和标签的顺序

13

不尊重抚养顺序?

15

Android不尊重颜色!

14

in图中的自定义离散颜色标度不尊重顺序。

23

颜色栏不尊重限值

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档