我正在尝试通过从多个输入文件中读取多变量数据模型来可视化它们。我正在寻找一种简单的解决方案来可视化从多个输入 csv 文件读取的多个类别数据。没有。输入中的行数在单个文件中从 1 到 10000 不等。格式与所有具有 4 列的 csv 文件的输入相同。
输入 1
tweetcricscore 34 51 high
输入 2
tweetcricscore 23 46 low
tweetcricscore 24 12 low
tweetcricscore 456 46 low
输入 3
tweetcricscore 653 1 medium
tweetcricscore 789 178 medium
输入 4
tweetcricscore 625 46 part
tweetcricscore 86 23 part
tweetcricscore 3 1 part
tweetcricscore 87 8 part
tweetcricscore 98 56 part
四个输入分别属于不同的类别,col[1]
和 col[2]
是某种分类的成对结果。这里所有的输入都是同一个分类的输出。我想以更好的方式将它们可视化,以仅在一个图中显示所有类别。寻找相同的 python 或 pandas 解决方案。散点图或任何最佳绘图方法。
我已经在堆栈交换的数据分析部分发布了这个查询,但我运气不好,因此在这里尝试。 https://datascience.stackexchange.com/questions/11440/multi-model-data-set-visualization-python
可能类似于下图,其中每个类都有自己的标记和颜色,并且可以分类或以任何更好的方式一起显示对值。
代码:编辑 1: 我正在尝试使用上述输入文件绘制散点图。
import numpy as np
import matplotlib.pyplot as plt
from pylab import*
import math
from matplotlib.ticker import LogLocator
import pandas as pd
df1 = pd.read_csv('input_1.csv', header = None)
df1.columns = ['col1','col2','col3','col4']
plt.df1(kind='scatter', x='col2', y='col3', s=120, c='b', label='Highly')
plt.legend(loc='upper right')
plt.xlabel('Freq (x)')
plt.ylabel('Freq(y)')
#plt.gca().set_xscale("log")
#plt.gca().set_yscale("log")
plt.show()
错误:
Traceback (most recent call last):
File "00_scatter_plot.py", line 12, in <module>
plt.scatter(x='col2', y='col3', s=120, c='b', label='High')
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 3087, in scatter
linewidths=linewidths, verts=verts, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 6337, in scatter
self.add_collection(collection)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1481, in add_collection
self.update_datalim(collection.get_datalim(self.transData))
File "/usr/lib/pymodules/python2.7/matplotlib/collections.py", line 185, in get_datalim
offsets = np.asanyarray(offsets, np.float_)
File "/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.py", line 514, in asanyarray
return array(a, dtype, copy=False, order=order, subok=True)
ValueError: could not convert string to float: col2
预期输出 Plotting- Pandas
最佳答案
更新:
不同的颜色:
colors = dict(low='DarkBlue', high='red', part='yellow', medium='DarkGreen')
fig, ax = plt.subplots()
for grp, vals in df.groupby('col4'):
color = colors[grp]
vals[['col2','col3']].plot.scatter(x='col2', y='col3', ax=ax,
s=120, label=grp, color=color)
PS 你必须注意你所有的组 (col4
) - 在 colors
字典中定义
旧答案:
假设您已将您的文件连接/合并/加入到单个 DF 中,我们可以执行以下操作:
fig, ax = plt.subplots()
[vals[['col2','col3']].plot.scatter(x='col2', y='col3', ax=ax, label=grp)
for grp, vals in df.groupby('col4')]
PS 作为作业 - 你可以玩颜色 ;)
关于python - 多输入多元数据可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147592/