坐标轴

ggplot2:图层控制系统

天涯浪子 提交于 2020-01-22 05:03:20
使用ggplot2绘图的小伙伴都了解ggplot2的优势是基于一套图形语法,让我们在绘图时将图形添加至不同的图层,大大增强了我们对数理统计绘图的可控性。我们常常通过看书或借鉴前人在网络上发布的绘图模板、教程等方式学习使用ggplot2,就会发现大家使用这套图形语法各有各的风格。新手接触各种逻辑不同的绘图模板就会云里雾里,反而加重了对ggplot2使用的不理解,可以说是日抛代码。 为了让学习曲线更平滑,同时也加深ggplot2的学习记忆,我用了一个简单的双坐标轴绘图来解说如何进行图层控制。 首先展示双坐标轴绘图的结果,然后再一步步分析如何实现该结果的图层控制步骤。也算是以后给自己再绘图时候的模板。 一个简单的双坐标轴绘图。 值得说明的是,这张图由两个数据集构成。主数据data集用于生成直方图,另一个数据集num根据主数据集计算得到百分比(折线图)。因为在我的测试中也尝试过在ggplot中使用group_by计算并映射,但是没有成功。后续工作中学习到新的方法再进行修改。不过这个代码也可以作为一张图要使用两个数据集共同绘制的例子。 p <- ggplot() + #先用函数,后续再使用+的方式添加图层 geom_bar(data = data, aes(x = year, fill = dummy), stat="count") + #绘制直方图 guides(fill = guide

设定绘图区坐标轴及标题字体、字号的两种方法

怎甘沉沦 提交于 2020-01-17 23:45:37
方法一:在标签栏和标题栏命令中分别规定汉字字体字号 close all a=0:1:43; b=[0 1 1 1 1 1 1 1 0 0 0]; b=[b b b b]; plot(a,b,'k-','LineWidth',2); grid on xlabel('时间(秒)','FontName','宋体','FontSize',20);%设定x坐标轴标签字体及大小,注意汉字必须用相应的字体(如宋体),否则显示有问题,下同 ylabel('速度(毫米/秒)','FontName','宋体','FontSize',20);%设定y坐标轴标签字体及大小 legend({'运动曲线'},'FontName','宋体','FontSize',20);%设定题目字体及大小,注意标签需加大括号 绘图如下: 方法二:利用set命令统一规定字体和字号大小 close all a=0:1:43; b=[0 1 1 1 1 1 1 1 0 0 0]; b=[b b b b]; plot(a,b,'k-','LineWidth',2); grid on xlabel('时间(秒)')%设定x坐标轴标签 ylabel('速度(毫米/秒)')%设定y坐标轴标签 legend('运动曲线');%设定题目 set(gca,'FontName','宋体','FontSize',20);%统一设定坐标轴标签,数字

python画图

*爱你&永不变心* 提交于 2020-01-15 05:54:20
包含头文件: import numpy as np import matplotlib.pyplot as plt 直接将文件中的二维数组读进来: data = np.loadtxt('data.txt') 画图: plt.plot(data[:,0], data[:,1], 'ro') plt.show() 其中r为红色,o为形状. 默认是 b-. 颜色表: Allias Color 'b' blue 'g' green 'r' red 'c' cyan 'm' magenta 'y' yellow 'k' black 'w' white 颜色也可以用参数color='r'或者c='r'指定. 颜色的表示可以是'#ff0000', 或者(1,0,0) 或者red. 线条样式表: . , o v ^ < > 1 2 3 4 s(正方形) p(五边形) * h(六边形1) H(六边形2) + x D(菱形) d(瘦菱形) | _ TICKLEFT TICKRIGHT TICKUP TICKDOWN CARETLEFT CARETRIGHT CARETUP CARETDOWN None plot参数: aa 抗锯齿 c 颜色 ls 线条风格 lw 线条宽度 mec mfc ms mew 直方图: plt.hist([1, 2, 3, 2, 3, 4, 3]) 如果不想要黑色边框

利用纯m文件生成ui(二)

别来无恙 提交于 2020-01-14 12:22:04
利用纯m文件生成ui之简单版canny边缘提取 布局部分 %get the cannyedge of the pictures. %调用说明: %选择自己图片并且导入点击按钮即可(测试版) % 版本号V1.0,编写于2019年12月12号 作者:neverland! %% h = figure('menubar','none',... 'NumberTitle','off',... 'Name','20177740--neverland的课程设计',... %窗口对象 'Position',[300 120 1000 800],... 'tag','figure1'); %坐标轴1 axes1 = axes('Units','pixels',... 'Parent',h,... 'position',[100 200 300 350],... 'XTick',[],... 'YTick',[],... 'Box','on',... 'tag','ax0'); %坐标轴2 axes2 = axes('Units','pixels',... 'Parent',h,... 'Position',[600 200 300 350],... 'XTick',[],... 'YTick',[],... 'Box','on',... 'tag','ax1'); %菜单作为控制按钮,选择原始图像

matplotlib 画图中图和次坐标轴

帅比萌擦擦* 提交于 2020-01-12 22:46:35
一: fig.add_axes 画图中图 fig = plt.figure() x = np.arange(1, 9, 1) y = np.linspace(1, 10, 8) left, bottom, width, height = 0.1, 0.1, 0.8, 0.8 ax1 = fig.add_axes([left, bottom, width, height]) ax1.plot(x, y, 'r') ax1.set_xlabel('x') ax1.set_ylabel('y') ax1.set_title('title') left, bottom, width, height = 0.2, 0.6, 0.25, 0.25 ax2 = fig.add_axes([left, bottom, width, height]) ax2.plot(y, x, 'b') ax2.set_xlabel('x') ax2.set_ylabel('y') ax2.set_title('title inside 1') left, bottom, width, height = 0.6, 0.2, 0.25, 0.25 ax3 = fig.add_axes([left, bottom, width, height]) ax3.plot(y, x, 'g') ax3.set_xlabel(

WPF oxyPlot 使用总结

大城市里の小女人 提交于 2020-01-11 05:01:30
  oxyPlot能够简易的创建图表并且该库也在Github上面开源 直通门 。以下是笔者基础使用总结。本文例子的 源码下载 1、安装与引用   新建一个wpf应用程序,然后使用Nuget控制台安装OxyPlot和OxyPlot.wpf直接键入。 Install-Package Oxyplot Install-Package Oxyplot.Wpf   你也可以在应用程序-->“引用”-->"右键"-->"管理Nuget包"进行检索oxyplot关键字,可以看到相应的类库引用。(吐槽下:Nuget访问很慢)   你也可以直接通过上面的直通门去下载最新的源码自己编译。 到此,已经将Oxyplot的类库引用到指定的应用程序上。 2、 创建PlotViewModel简易画曲线   在OxyPlot内部可以通过Serial进行定义图表,包含:LineSerial(线条--可以通过定义点进行画线条)、FunctionSerial(函数曲线)、AreaSerial(区域)、StairSerial等,笔者就只用到前两者。   接下来实现一个画直线以及sin(x)的函数线的例子进行说明。   在PlotViewModel内部添加SimplePlotModel属性(类型:PlotModel),并且在PlotViewMode构造函数内部进行实例化,同时将定义好的直线以及sin(x)函数线添加该属性上

【Matlab】subplot的用法详解

随声附和 提交于 2020-01-08 11:47:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> subplot 在绘图窗口中创建多个平铺的坐标轴 subplot(m, n, p): 将当前图形窗口创建m*n个网格,并第p个网格中创建一个坐标轴。网格的排列顺序为先行后列,如m=2,n=3,则该指令创建一个2行3列的网格阵列,网格序列号为第一行由左往右依次为1-2-3;第二行由左往右依次为4-5-6。如果p=2,则在网格序列号为2的位置创建坐标轴。 如果p指定的网格中已经存在坐标轴,则该指令不会覆盖已存在坐标轴,而只将该坐标轴切换到当前工作模式以用于当前操作。 subplot(m, n, p, 'replace') 删除p指定网格中的坐标轴,并在该位置创建一个新的坐标轴 subplot(m, n, p, ax) 在坐标轴ax所在绘图窗口中创建m*n网格阵列,并将坐标轴ax放置到第p个网格中。 %%创建一个figure x = linspace(1,10); y = sin(x); plot(x,y) title('Sine Plot') ax = gca; %获取当前坐标轴 subplot(2,1,2,ax) %在该figure中执行替换。 ax = subplot(___) 获取所创建的坐标轴句柄。 subplot(ax) 将坐标轴句柄ax指定的坐标轴设置为当前工作的坐标轴。 来源: oschina 链接:

echarts柱状图单组数据配置

浪子不回头ぞ 提交于 2020-01-06 21:04:03
var option = { //标题栏 title: { text: '客户总体分析', bottom: '0', left: '35%' }, //选中时弹出的悬浮框 tooltip: { trigger: 'axis', //'item',数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。'axis',坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。 axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow', // 默认为直线,可选为:'line' | 'shadow' }, formatter: '{b}: {c}%', //需要展示的数据,b为名称,c为数值 confine: true //是否将悬浮框限定在特定区域 }, //绘图网格 grid: { left: '10%', //距离左边界 right: '10%', bottom: '10%', top: '20%', containLabel: true //为true是可防止溢出 }, // grid 中的 x 轴 xAxis: [{ type: 'category', //'value' 数值轴,'category' 类目轴,'time' 时间轴,'log' 对数轴 //name:'这是x轴',//坐标轴名称 //show:true,//是否显示x轴 /

echarts柱状图单组数据配置

这一生的挚爱 提交于 2020-01-05 00:30:10
var option = { //标题栏 title: { text: '客户总体分析', bottom: '0', left: '35%' }, //选中时弹出的悬浮框 tooltip: { trigger: 'axis', //'item',数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。'axis',坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。 axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow', // 默认为直线,可选为:'line' | 'shadow' }, formatter: '{b}: {c}%', //需要展示的数据,b为名称,c为数值 confine: true //是否将悬浮框限定在特定区域 }, //绘图网格 grid: { left: '10%', //距离左边界 right: '10%', bottom: '10%', top: '20%', containLabel: true //为true是可防止溢出 }, // grid 中的 x 轴 xAxis: [{ type: 'category', //'value' 数值轴,'category' 类目轴,'time' 时间轴,'log' 对数轴 //name:'这是x轴',//坐标轴名称 //show:true,//是否显示x轴 /

投影矩阵推导(翻译)

我们两清 提交于 2020-01-01 21:57:24
投影矩阵推导(翻译) 原网址: http://www.codeguru.com/cpp/misc/misc/graphics/article.php/c10123/Deriving-Projection-Matrices.htm 3D矩阵变换中,投影矩阵是最复杂的。位移和缩放变换一目了然,旋转变换只要基本的三角函数就能想象出来,投影矩阵则很难凭借直觉想象出来。 总述:什么是投影 计算机显示屏是二维平面,所以如果你想显示三维物体,需要找到把三维物体渲染成二维图像的方法。这正是投影要做的。最简单的做法:直接丢掉三维物体各顶点的Z坐标。对于一个立方体,看起来像图1: 图1 通过丢掉Z坐标方法投影到XY平面 这种投影简单且不实用。所以,一开始就不应该投影到“面”(plane)上,而应该投影到一个“体”(volume)内,即所谓的“规范视域体”(canonical view volume)。规范视域体的顶点坐标在不同的API(DirectX/OpenGL)中有所不同。这里就用D3D的标准,从 (-1,-1,0)到(1,1,1)。当所有的顶点映射到规范视域体中后,XY坐标用来再映射到屏幕上。Z坐标看起来无用,不过通常用来表示深度信息。这也是为什么会投影到一个“体”,而不是“面”的原因。 下面将讲述两种常见变换:正交变换、透视变换。 正交变换 “正交”的由来是投影线与显示平面垂直