多值直方图作为散点和直方图p的组合

2024-04-23 23:47:09 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的研究中,我有一些理论计算。我想用理论值和实验值减去它们来表示这些数据的准确性。这留下了一些不同之处,我想用图来显示这些数据。在

我已经做了一个我要找的情节的模拟表现。红线是图的零,这意味着理论值和实验值没有差别。x轴有V1,V2,…,VN,它们是要计算的不同事物。问题是每个V都有两到三个值,在我制作的模拟图形中用“X”表示。在

example picture showing the problem

我不知道该怎么做。我试着用Gnuplot查看多值直方图,但结果是空的。有谁能对此有任何见解,或者有一个实用的Gnuplot脚本示例吗?如果您知道用Python或其他方法来实现这一点,我也愿意使用其他想法。问题是我对Python一无所知。在


Tags: 数据脚本图形示例直方图理论v2事物
2条回答

使用gnuplot有几种方法可以实现这一点。这里有一个我觉得很合理的选择:

  1. 将属于一个v-值的值存储在一个数据块中。两个数据块之间用两条新线隔开。例如数据:

    # v1 values
    -0.5
    1.1
    0.4
    -0.2
    
    
    # v2 values
    -0.1
    0.1
    -0.7
    
    
    # v3 values 
    0.9 
    0.5
    0.2
    
  2. 标签存储在字符串中,用空格字符分隔。(使用此选项,您只能使用不包含空格的标签,引用无效)。在

    labels = "v1 v2 v3"
    
  3. 作为x轴的数值,您可以取数据块的编号,这是用特殊列-2,即using (column(-2))得到的。此号码还可以用于从labels字符串访问相应的标签。

下面是一个示例脚本:

set xzeroaxis lc rgb 'red' lt 1 lw 2
set offset 0.2,0.2,0,0
set xtics 1
unset key
set linetype 1 linetype 2 lc rgb 'black' lw 2
labels = "v1 v2 v3"
plot 'data.dat' using (column(-2)):1:xtic(word(labels, column(-2)+1))

4.6.5的结果为:

enter image description here

当然,根据您的实际需要,您有很多选项可以修改或扩展此脚本。在

你好像什么都没数,所以你的图不是直方图。这是一堆水平排列的垂直1D散点图。在

下面使用matplotlib来非常接近您的模型(出于习惯,我将“Differences”重命名为相当传统的术语“Residuals”):

import numpy as np
import matplotlib.pyplot as plt


np.random.seed(123)

# Demo data consists of a list of names of the "variables",
# and a list of the residuals (in numpy arrays) for each variable.
names = ['V1', 'V2', 'V3', 'V4']

r1 = np.random.randn(3)
r2 = np.random.randn(2)
r3 = np.random.randn(3)
r4 = np.random.randn(3)
residuals = [r1, r2, r3, r4]

# Make the plot

for k, (name, res) in enumerate(zip(names, residuals)):
    plt.plot(np.zeros_like(res) + k, res, 'kx',
             markersize=7.0, markeredgewidth=2)

plt.ylabel("Residuals", fontsize=14)
plt.xlim(-1, len(names))
ax = plt.gca()
ax.set_xticks(range(len(names)))
ax.set_xticklabels(names)
plt.axhline(0, color='r')

plt.show()

plot residuals

相关问题 更多 >