同一篇报道,两种标题

在CloudStack技术大会上,cloud.com的创始人梁胜也在活动中做了演讲。

优快云采访了梁胜,有了如下报道和标题:
“Citrix华人CTO:我们为什么退出OpenStack?” http://www.youkuaiyun.com/article/2012-11-14/2811878-Sheng_Liang_interview

但很有意思,这篇文章被中云网转载,就把标题改成了“梁胜:把CloudStack做成一个真正健康的开源项目”http://www.china-cloud.com/yunhudong/yunrenwu/renwuxinwen/2012/1115/16245.html

那个活动我也参加了,回忆下当时印象:

梁胜早年在中科院计算所读研,赴美留学毕业后就一直在硅谷工作。2008年注册公司时说做云计算,见多识广的注册人员还问他云计算是什么。他自己当初也没想到云计算爆发得那么快,2008年底创业,2011年以2亿美金被Citrix收购。

在演讲中,梁胜谈到The Apache Way。现在CloudStack的品牌和源代码都捐给了Apache,因为基于对Apache基金会的信任。Apache基金会经过十多年的实践,已经拥有很多成功的开源项目。CloudStack目前还处于孵化期,因为Apache基金会认为只有这个项目中大多数开发人员都不是来自Citrix,才能被接纳为正式项目。Apache有一个保证民主制度的杀手锏,每个技术成员,都有一票否决权。

我当时提了个问题:CloudStack目前还处于的孵化期,而成为Apache正式项目需要几个条件,其中一个就是社区的多样化,衡量标准是大部分代码不能被一家公司垄断。Citrix有没有时间表,或者有什么举措,来推进CloudStack社区的多样化?

那种活动场合下,这种问题不可能有很明确的答案。
基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点进行了系统建模与控制策略的设计与仿真验证。通过引入螺旋桨倾斜机构,该无人机能够实现全向力矢量控制,从而具备更强的姿态调节能力和六自由度全驱动特性,克服传统四旋翼欠驱动限制。研究内容涵盖动力学建模、控制系统设计(如PID、MPC等)、Matlab/Simulink环境下的仿真验证,并可能涉及轨迹跟踪、抗干扰能力及稳定性分析,旨在提升无人机在复杂环境下的机动性与控制精度。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真能力的研究生、科研人员及从事无人机系统开发的工程师,尤其适合研究先进无人机控制算法的技术人员。; 使用场景及目标:①深入理解全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真流程;③复现硕士论文级别的研究成果,为科研项目或学术论文提供技术支持与参考。; 阅读建议:建议结合提供的Matlab代码与Simulink模型进行实践操作,重点关注建模推导过程与控制器参数调优,同时可扩展研究不同控制算法的性能对比,以深化对全驱动系统控制机制的理解。
import numpy as np import matplotlib.pyplot as plt 数据准备 species = [‘Finless porpoise’, ‘Sea turtle’, ‘Whale Shark’] categories = [‘Gillnet’, ‘Trawl’, ‘Seine’, ‘Other’] alive_data = [ [37, 33, 10, 11], [143, 152, 35, 17], [2, 10, 3, 1] ] dead_data = [ [19, 13, 0, 3], [1, 4, 1, 0], [0, 3, 0, 2] ] 设置柱状图宽度 bar_width = 0.15 index = np.arange(len(categories)) 创建画布和子图 fig, ax = plt.subplots(figsize=(12, 8)) 定义颜色方案 colors_alive = [‘#F84B35’, ‘#166f0e’, ‘#9C6644’] # 存活数颜色 colors_dead = [‘#B80002’, ‘#60928F’, ‘#B08968’] # 死亡数颜色 绘制分组堆叠柱状图 for i, specie in enumerate(species): # 存活数 ax.bar(index + i * bar_width, alive_data[i], bar_width, color=colors_alive[i], label=f’{specie} Alive’,edgecolor=‘black’) # 死亡数 ax.bar(index + i * bar_width, dead_data[i], bar_width, bottom=alive_data[i], color=colors_dead[i], label=f’{specie} Dead’,edgecolor=‘black’) 设置字体样式 plt.rcParams[‘font.sans-serif’] = [‘Arial’] # 设置无衬线字体1 plt.rcParams[‘font.size’] = 18 # 设置字号 plt.rcParams[‘font.weight’] = ‘bold’ # 设置加粗1 增强坐标轴和刻度线 for spine in ax.spines.values(): spine.set_linewidth(2) spine.set_color(‘black’) ax.tick_params(axis=‘both’, which=‘major’, width=2, length=6, color=‘black’) 添加标签、标题和图例 ax.set_ylabel(‘Counts’, fontsize=18) ax.set_xticks(index + bar_width * (len(species) - 1) / 2) ax.set_xticklabels(categories, fontweight=‘bold’, fontsize=18) ax.legend(fontsize=12, frameon=True, edgecolor=‘black’, facecolor=‘white’) 调整x轴标签,使其更加紧凑并旋转一定角度 plt.xticks(fontsize=16) # 增大x轴刻度字体 plt.yticks(fontsize=16) # 增大y轴刻度字体 调整布局并显示 plt.tight_layout() plt.savefig(‘species_distribution.tiff’, dpi=600, bbox_inches=‘tight’, facecolor=ax.get_facecolor(), edgecolor=‘none’) plt.show() 报道数,和死亡数,分别做两个柱状图,水平排列
06-25
<think>我们需要绘制两个柱状图,分别表示存活数和死亡数,并且水平排列。这意味着我们将有两个子图,一个用于存活数据,一个用于死亡数据,它们在同一行上(水平排列)。思路:1.创建两个子图,水平排列(即1行2列)。2.在每个子图上分别绘制三种物种在四种渔具类型下的数据(存活数据和死亡数据分开在两个图中)。3.每个子图都是一个堆叠柱状图吗?不,根据要求,我们分别做两个柱状图,一个展示存活数,一个展示死亡数。但注意,每个图中都有三个物种(Finlessporpoise,Seaturtle,WhaleShark)和四种渔具类型(Gillnet,Trawl,Seine,Other)。因此,每个子图内应该是分组柱状图(每个渔具类型下,三种物种并排显示)。但是,原代码中每个物种的存活和死亡是堆叠在一起的(在同一根柱子上堆叠),现在要求分开两个图,那么每个图只展示一种状态(存活或死亡),但每个图中要展示三个物种在不同渔具类型下的数据。因此,我们调整:图1:存活数,展示三种物种在四种渔具类型下的存活数量(用分组柱状图,即每个渔具类型下有三个柱子,分别代表三个物种)。图2:死亡数,同理。然而,原数据中alive_data和dead_data都是列表的列表,其中每个子列表对应一个物种在四种渔具类型下的数据(存活或死亡)。所以,在第一个图中,我们要绘制的是:对于渔具类型0(Gillnet):三个物种的存活数分别是alive_data[0][0],alive_data[1][0],alive_data[2][0]对于渔具类型1(Trawl):三个物种的存活数分别是alive_data[0][1],alive_data[1][1],alive_data[2][1]以此类推。同样,死亡图类似。因此,我们需要将数据重新组织一下,以便于在两个图中分别绘制。我们可以这样组织:存活图的数据:实际上就是alive_data,但注意alive_data是一个3行4列的矩阵(3物种,4渔具)。但是我们在绘制分组柱状图时,需要的是按渔具类型分组,每组有三个物种的数据。所以我们需要将alive_data转置一下,或者按列来取。另一种方法是:我们不需要转置,因为我们可以直接使用每个渔具类型下三个物种的数据。我们可以用numpy数组来操作。步骤:1.将alive_data和dead_data转换为numpy数组。2.创建1行2列的子图布局。3.设置柱状图的宽度和位置索引。4.分别绘制两个子图。注意:由于每个渔具类型下有三个物种,所以每个渔具类型的位置上要画三个柱子(并排),因此需要设置每个物种的柱子的偏移。具体实现:对于第一个子图(存活数):index=np.arange(len(categories))#4个渔具类型的位置bar_width=0.25#每个物种的柱子宽度,假设三个物种并排,宽度可以设置小一点foriinrange(len(species)):#绘制第i个物种在四个渔具类型上的存活数ax1.bar(index+i*bar_width,[alive_data[i][j]forjinrange(len(categories))],bar_width,label=species[i],color=colors_alive[i],edgecolor='black')同理,第二个子图(死亡数)类似。但是注意,原代码中存活和死亡的颜色是分开的,现在每个图中只展示一种状态,所以我们可以直接使用原来存活数的颜色来表示每个物种(在存活图中),而死亡图中我们可以使用原来死亡数的颜色,或者为了区分物种,我们也可以使用与存活图相同的颜色方案(但这样可能混淆),或者使用不同的颜色方案?这里为了区分物种,建议在存活图和死亡图中,同一种物种使用同一种颜色(但用不同深浅?)。不过原题没有要求,我们可以按照原代码中存活数的颜色作为存活图中各物种的颜色,死亡图中各物种的颜色则使用原死亡数的颜色。但注意:原代码中存活数的颜色有三种,死亡数的颜色也有三种。所以我们在存活图中使用colors_alive,在死亡图中使用colors_dead。另外,由于每个子图都是独立的分组柱状图,所以每个子图都需要自己的图例(或者我们可以将图例放在外面统一表示)。下面我们开始写代码。我们将使用subplots来创建1行2列的两个子图。注意:设置字体、坐标轴等样式。另外,原代码中保存为tiff格式,我们也同样保存。由于原代码中设置了一些全局字体,我们同样设置。步骤:1.导入库2.数据准备3.创建画布和两个子图(水平排列,1行2列)4.设置柱状图宽度和索引5.定义颜色6.在第一个子图上绘制存活数据(分组柱状图)7.在第二个子图上绘制死亡数据(分组柱状图)8.设置每个子图的标题、坐标轴标签、图例等9.调整布局并保存注意:原代码中设置坐标轴宽度、刻度等,我们也同样设置。代码实现如下:</think>以下是将存活数和死亡数分别绘制为两个水平排列柱状图的代码实现。我将创建两个子图,左侧显示存活数据,右侧显示死亡数据: ```python import numpy as np import matplotlib.pyplot as plt # 数据准备 species = ['Finless porpoise', 'Sea turtle', 'Whale Shark'] categories = ['Gillnet', 'Trawl', 'Seine', 'Other'] alive_data = [ [37, 33, 10, 11], [143, 152, 35, 17], [2, 10, 3, 1] ] dead_data = [ [19, 13, 0, 3], [1, 4, 1, 0], [0, 3, 0, 2] ] # 设置柱状图宽度 bar_width = 0.2 index = np.arange(len(categories)) # 创建画布和子图 (1行2列水平排列) fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8), sharey=True) # 定义颜色方案 colors = ['#1f77b4', '#ff7f0e', '#2ca02c'] # 统一颜色方案 # 绘制存活数据柱状图 (左侧) for i, specie in enumerate(species): ax1.bar(index + i * bar_width, alive_data[i], bar_width, color=colors[i], label=specie, edgecolor='black') # 绘制死亡数据柱状图 (右侧) for i, specie in enumerate(species): ax2.bar(index + i * bar_width, dead_data[i], bar_width, color=colors[i], label=specie, edgecolor='black') # 设置字体样式 plt.rcParams['font.sans-serif'] = ['Arial'] # 设置无衬线字体 plt.rcParams['font.size'] = 14 plt.rcParams['font.weight'] = 'bold' # 增强坐标轴和刻度线 for ax in [ax1, ax2]: for spine in ax.spines.values(): spine.set_linewidth(2) spine.set_color('black') ax.tick_params(axis='both', which='major', width=2, length=6, color='black') ax.grid(axis='y', linestyle='--', alpha=0.7) # 设置标题和标签 ax1.set_title('Alive Counts', fontsize=16, fontweight='bold', pad=15) ax2.set_title('Dead Counts', fontsize=16, fontweight='bold', pad=15) ax1.set_ylabel('Counts', fontsize=14, fontweight='bold') ax1.set_xticks(index + bar_width) ax1.set_xticklabels(categories, fontweight='bold', fontsize=12) ax2.set_xticks(index + bar_width) ax2.set_xticklabels(categories, fontweight='bold', fontsize=12) # 添加图例 handles, labels = ax1.get_legend_handles_labels() fig.legend(handles, labels, loc='upper center', ncol=3, fontsize=12, frameon=True, edgecolor='black', facecolor='white', bbox_to_anchor=(0.5, 0.05)) # 调整布局 plt.tight_layout() plt.subplots_adjust(bottom=0.15) # 为底部图例留出空间 # 保存图像 plt.savefig('species_distribution_horizontal.tiff', dpi=600, bbox_inches='tight', facecolor='white', edgecolor='none') plt.show() ``` ### 代码解释: 1. **子图布局**: - 使用 `plt.subplots(1, 2)` 创建水平排列的两个子图 - `sharey=True` 确保两个子图共享Y轴刻度 2. **数据分离**: - 左侧子图 (`ax1`) 只显示存活数据 (`alive_data`) - 右侧子图 (`ax2`) 只显示死亡数据 (`dead_data`) 3. **颜色方案**: - 使用统一的颜色方案表示物种 (蓝、橙、绿) - 同一物种在两个图表中使用相同颜色便于比较 4. **布局优化**: - 共享Y轴减少重复标签 - 图例放置在图表底部中央位置 - 添加网格线提高可读性 - 调整底部边距为图例留出空间 5. **视觉增强**: - 添加黑色边框的柱状图 - 加粗坐标轴和刻度线 - 使用无衬线字体提高可读性 - 添加图表标题明确区分存活/死亡数据 ### 效果说明: 生成的图表将水平排列两个柱状图: - 左侧:显示各物种在不同渔具中的存活数量 - 右侧:显示各物种在不同渔具中的死亡数量 - 相同物种在两个图表中使用相同颜色 - Y轴刻度在两个图表中保持一致便于比较 这种布局便于直观比较同一物种在不同渔具中的存活/死亡情况,以及不同渔具对物种生存的影响差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值