- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在做一个项目,我想显示一个看起来像条形图的单线直方图,除了条形图中的每条线代表一个像素及其灰度值。
我有一个充满灰度值的数组,我只需要将它们放入这个直方图中并让它显示代表这些值的线..有点像这样
IMAGE [minimize][maximize][close]
picture histogram
I
(Loaded Picture) I I
I I I
I I I I
[open][save]
下面是加载数组的代码...我只需要获取一些代码,这些代码将使用这些灰度值并将它们表示为像上面那样的条。
public void showImage(File fileName) {
Scanner scan;
try {
scan = new Scanner(fileName);
typefile = scan.next();
iname = scan.next();
width = scan.nextInt();
height = scan.nextInt();
maxshade = scan.nextInt();
array = new int[width][height];
for(int r = 0; r < array.length; r++){
for(int c = 0; c < array[r].length; c++){
array[r][c] = scan.nextInt();
imageArray = array;
repaint();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
我知道我必须做类似...
int hist[] = new int[256];
for (int r = 0; r < array.length; r++)
for (int c = 0; c < array[r].length; c++)
hist[array[r][c]]++;
但我不知道从那里去哪里或如何绘制我的图表。
最佳答案
有点像
也许??
就个人而言,我仍然会使用类似 JFreeChart 的东西,但这是一个有趣的小练习...
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class TestHisogram {
//http://stackoverflow.com/a/12520104/714968
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new TestHisogram();
}
});
}
public TestHisogram() {
// For this example, I just randomised some data, you would
// Need to load it yourself...
int width = 256;
int height = 256;
int[][] data = new int[width][height];
for (int c = 0; c < height; c++) {
for (int r = 0; r < width; r++) {
data[c][r] = (int) (256 * Math.random());
}
}
Map<Integer, Integer> mapHistory = new TreeMap<Integer, Integer>();
for (int c = 0; c < data.length; c++) {
for (int r = 0; r < data[c].length; r++) {
int value = data[c][r];
int amount = 0;
if (mapHistory.containsKey(value)) {
amount = mapHistory.get(value);
amount++;
} else {
amount = 1;
}
mapHistory.put(value, amount);
}
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new JScrollPane(new Graph(mapHistory)));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
protected class Graph extends JPanel {
protected static final int MIN_BAR_WIDTH = 4;
private Map<Integer, Integer> mapHistory;
public Graph(Map<Integer, Integer> mapHistory) {
this.mapHistory = mapHistory;
int width = (mapHistory.size() * MIN_BAR_WIDTH) + 11;
Dimension minSize = new Dimension(width, 128);
Dimension prefSize = new Dimension(width, 256);
setMinimumSize(minSize);
setPreferredSize(prefSize);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (mapHistory != null) {
int xOffset = 5;
int yOffset = 5;
int width = getWidth() - 1 - (xOffset * 2);
int height = getHeight() - 1 - (yOffset * 2);
Graphics2D g2d = (Graphics2D) g.create();
g2d.setColor(Color.DARK_GRAY);
g2d.drawRect(xOffset, yOffset, width, height);
int barWidth = Math.max(MIN_BAR_WIDTH,
(int) Math.floor((float) width
/ (float) mapHistory.size()));
System.out.println("width = " + width + "; size = "
+ mapHistory.size() + "; barWidth = " + barWidth);
int maxValue = 0;
for (Integer key : mapHistory.keySet()) {
int value = mapHistory.get(key);
maxValue = Math.max(maxValue, value);
}
int xPos = xOffset;
for (Integer key : mapHistory.keySet()) {
int value = mapHistory.get(key);
int barHeight = Math.round(((float) value
/ (float) maxValue) * height);
g2d.setColor(new Color(key, key, key));
int yPos = height + yOffset - barHeight;
//Rectangle bar = new Rectangle(xPos, yPos, barWidth, barHeight);
Rectangle2D bar = new Rectangle2D.Float(
xPos, yPos, barWidth, barHeight);
g2d.fill(bar);
g2d.setColor(Color.DARK_GRAY);
g2d.draw(bar);
xPos += barWidth;
}
g2d.dispose();
}
}
}
}
关于java - 绘制图形直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12518496/
我使用 为 .dat 文件中的一些数据创建了直方图 binwidth=... bin(x,width)=width*floor(x/width) plot 'file' using (bin($1,b
我需要能够在单个直方图上显示多条线,其中每条线都应该由一个参数表示。我有多个服务器,我想监控它们的 CPU 使用率。我的 Kibana 输入数据如下所示: 时间戳 |机器 |姓名 |值(value)
我在 Elasticsearch 中有一个索引,它包含一个简单对象数组(键值,请参见下面的示例)。 文档有时间戳。 我可以在 Kibana 中为每个键值创建单独的直方图(即一个用于 bytes_sen
所以我想出了如何将我的数据下钻到频率表 - Overall.Cond Freq 235 1 0 236 2 0 237
我的目标是使用 gnuplot 5.4 框创建直方图,并用特定的 RGB 值对每个框进行着色(出于测试目的,它是“绿色”,但在最终数据集中将是 #RRGGBB) 我的数据如下所示: 5.800507
我有 chr totgenes FST>0.4 %FST>0.4 exFST>0.4 %exFST>0.4 inFST>0.4 %inFST>0.4 chrtotlen 1 14
我用 matplotlib 创建了一个直方图使用 pyplot.hist()功能。我想在条形图中添加 bin 高度 ( sqrt(binheight) ) 的毒物误差平方根。我怎样才能做到这一点? .
我有兴趣在 R 中创建一个包含两个(或更多)人口的直方图,这意味着 - 我不希望两个直方图共享同一个图形,而是一个包含两种或更多颜色的条形图。 找到下面的图片 - 这就是我想要完成的。 有什么想法吗?
所以,我需要按日期制作数据直方图,但我有 xticlabel 重叠的问题,所以,我试图找到一个解决方案,如何跳过 xtics 以避免重叠。考虑到日期不是整数抽动,我试图以这种方式解决它: .dat 文
给定每小时都有数据点的(电力)市场数据的时间序列,我想显示一个包含每小时数据的所有时间/时间范围平均值的条形图,以便分析师可以轻松地将实际价格与所有时间平均值进行比较(一天中哪个小时最贵/最便宜)。
+----+----+--------+ | Id | M1 | trx | +----+----+--------+ | 1 | M1 | 11.35 | | 2 | M1 | 3.4
所以,我需要按日期制作数据直方图,但我有 xticlabel 重叠的问题,所以,我试图找到一个解决方案,如何跳过 xtics 以避免重叠。考虑到日期不是整数抽动,我试图以这种方式解决它: .dat 文
我有以下示例数据文件,我想在 gnuplot 中将其绘制为直方图 1 1 2 2 4 3 我正在使用以下命令绘制数据:用方框绘制“sample.data”,生成以下图表: ##
我是 Java 编码新手,我正在尝试使用提供给我的以下方法创建直方图。这些注释是对每个方法的说明,稍后我们将使用它们来创建主方法并打印直方图。我已经达到了方法 3,并且能够很好地编译所有内容,但我不确
我有一个由服务器上的程序生成的连续生成的数据(文本文件)。我想将数据绘制为实时图表,就像 powergrid做。这是我的方法: 由于数据是在服务器上以文本文件的形式连续生成的,因此我编写了一个 PHP
我正在尝试通过一个函数使用 D3 创建一个简单的直方图。图表的 y 值作为数组传递给函数,然后函数创建 svg 和条形图。我得到了正确的轴,但条被切断了。 似乎我的矩形 x 值太大而无法放入 svg
有没有办法用 linq 做一个分段直方图?我见过几个示例,您可以在其中计算特定对象的出现次数。是否可以创建一个基于 linq 的直方图来计算两个值之间的一系列对象的出现次数? 我不知道您将如何按一系列
我正在参加初级 Java 类(class),任务是创建一个具有以下输出的直方图程序:(100 和 10 是用户输入)。 有多少个数字? 100 间隔多少? 10 Histogram ---------
如何使用 corePlot 实现直方图。实际上,我正在尝试使用条形图。 在条形图中是否有任何选项可以对我的值进行分组。例如:所以我只能打印 3 条。这样值应该像这样分组: X 0...5: B
我有一个简单的数据集,其中脚本需要时间来完成各个步骤。时间是不可预测的,但主要分组在特定的时间范围内,但我想以十分之一秒的分组来绘制图表。 (我知道这很奇怪,这是一些报告可视化内容的要求)。我可以将我
我是一名优秀的程序员,十分优秀!