[英]Bubble plot or Heatmap in matplotlib
我正在尝试绘制可动态调整大小的气泡(散点图)。 当我尝试使用随机数据进行绘图时,我可以很好地进行绘图。 但是,当我尝试解析输入文件时,我无法绘图。
输入:
Nos,Place,Way,Name,00:00:00,12:00:00
123,London,Air,Apollo,342,972
123,London,Rail,Beta,2352,342
123,Paris,Bus,Beta,545,353
345,Paris,Bus,Rava,652,974
345,Rome,Bus,Rava,2325,56
345,London,Air,Rava,2532,9853
567,Paris,Air,Apollo,545,544
567,Rome,Rail,Apollo,5454,5
876,Japan,Rail,Apollo,644,54
876,Japan,Bus,Beta,45,57
程序:
import pandas as pd
from pandas import DataFrame
import pandas.io.data
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
df=pd.read_csv('text_2.csv')
#SIZE OF BUBBLES CHANGES
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(df['Place'],df['Name'], s=df['00:00:00']) # Added third variable income as size of the bubble
plt.show()
我正在尝试将Place
作为x axis
,将Name
作为y axis
并将Size
从count(00:00)
。 泡沫很大,周围找不到很多例子。 任何有价值的建议都是适当的。 提前致谢。 为什么在(00:00)列出现错误,如何传递该列的值?
错误:
Traceback (most recent call last):
File "Bubble_plot.py", line 18, in <module>
ax.scatter(df['Place'],df['Name'], s=df['00:00:00']) # Added third variable income as size of the bubble
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 6266, in scatter
x, y, s, c = cbook.delete_masked_points(x, y, s, c)
File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 1774, in delete_masked_points
raise ValueError("First argument must be a sequence")
ValueError: First argument must be a sequence
我希望通过将“名称”和“位置”更改为分类项可能会起作用,但是在那里没有任何运气(无论是情节还是自然的)。 如果将它们转换为整数,则基本上可以使用,但随后丢失了字符串或类别标签。 FWIW:
df2 = df.copy()
for c in ['Place','Name']:
df2[c] = df2[c].astype('category').cat.codes
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(df2['Place'],df2['Name'], s=df2['00:00:00'])
也许热图会更好? 它似乎可以接受分类,因此您可以免费获得标签。
df3 = df.copy()
for c in ['Place','Name']:
df3[c] = df3[c].astype('category')
sns.heatmap( df3.pivot_table( index='Place', columns='Name', values='00:00:00' ) )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.